{
 "cells": [
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 基于关键词挖掘的热线文本数据犯罪线索筛查方法研究\n",
    "\n",
    "> 2023-03-04"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> - 数据量不够：论文写到有 8 万条，这里只有 22280 条，会影响模型精度；\n",
    "> - 类别不平衡：普通事件：线索时间 = 1:4\n",
    "> - 模型具体参数未知：论文没有具体写出模型的设置参数；\n",
    "> - 中文维基库缺乏与该论文相关的刑侦、法律领域语料，导致存在很多 OOV 词（”非法拘禁“、”刑事拘留“），建议重新寻找法律相关语料库训练 Word2Vec 模型；\n",
    "> - 本文方法繁琐，建议使用语言预训练大模型直接进行文本分类任务。\n"
   ]
  },
  {
   "attachments": {
    "image.png": {
     "image/png": "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vPPOpddYY43DvfWuNx1JREAEREAEREAEREAEREAERKBRCHgr30tDhgwZvNFGGw3z14xihmJnS6Ft6m0xRdBXJXXsM8krm1JnaxpZOV5TjpegvPm6eG2KHe2sPHGXLl0mGT58+FEzzzzzjr5eIgIiIAIiIAIiIAIiIAIiIAINS2DMmDH/7dGjxwljx479w0MwRc+UuKxtFDjbb0qfreFoCp6tQx0KWTEx5Y42Vi61TpS8/v37d/nkk0+ukpJXDLH2iYAIiIAIiIAIiIAIiIAINAoBdCN0JHQlf82J7uTLpfQs2w+quMx2E7E5cjREbG1l6yBeMxi240E1KTPwyy+//A7vqrk4nUlEQAREQAREQAREQAREQAREQAScm2yyyeZef/311/rggw/uePPNN38rwcQsdbYu1DzW5ZpogrYzVuzoyJQ7U/Bs3UTB82074a7po8xcNfXUU69UaBSqFwEREAEREAEREAEREAEREIFGJvDjjz8+6bMQbDfBjXO8ZxG7bsZllLzYfZMyQr0tts06KHChUOSHKX80sTLr9GJK30TMyZOSV4SodomACIiACIiACIiACIiACDQ8AXQmdCcPAt0q0acmbMf6FqzYNonLVpe3pjMTa2xrq2dNXaElHtDERNfUnLwYncoiIAIiIAIiIAIiIAIiIAIikE0A3Qkdyu9Fr0LnivWrQjpYujPaIbZOlLe4slBn6ROzzRw/G0go+zwRtyuFAjglIiACIiACIiACIiACIiACIlCaAKkXfJ7xTXxLXDJjF864bK6btjaXzXjNydgOShrrUmKaYSElMNSTDF1KXimU2i8CIiACIiACIiACIiACIiACfxNAh0KX8jVF9a0JR5hu9ncHGSWscaXEOip20mDt69mz5w6lOtN+ERABERABERABERABERABERCBfAITdCl0rqBb+XUh/YsD2VdU0oqeHVBobZ01OemAAQO6eHMjvqUSERABERABERABERABERABERCBCgigS6FT+UOa6FqpbgrpalYfmpuiF1da2dbWL9u2UGflsB40aNAaE000keXls2O0FgEREAEREAEREAEREAEREAERKEEAXQqdyjfL07MmHBbXxT1Rj9g6KZuiF/Zm/Ig7tIPjOutoIp//YaWM41UlAiIgAiIgAiIgAiIgAiIgAiJQBoEJOpXpWxxh5SxdzOoyey6l6KUPKngiP4FwtnRjbYuACIiACIiACIiACIiACIiACJRHYIJOVVDnKq+Xv1oVU/RMQ4zX6XIyiM6dO89UyYnVVgREQAREQAREQAREQAREQARE4G8CE3SqRMfye6xMo3TZ6lg3kWKKXtyYTtNiJwrrSSaZZOZ0A22LgAiIgAiIgAiIgAiIgAiIgAiUR2CCTpWnZ2UcmaWbNWkWK3p2gHVMY6uzA+N9VhfWE0888ZR5FdoQAREQAREQAREQAREQAREQAREom0ARnSpLDzNdLd5ndU0Spic7otFYna3ZRTm9RIeoKAIiIAIiIAIiIAIiIAIiIAIi0AwCaT0rrYfRZVxnp8iriy161sDWccNCZWtb0/XYsWPdKaec4uaYYw7nJyg6H3pUSxUYTDrppG7JJZd0Bx98cE3vnzoXAREQAREQAREQAREQARFoEYFC+lhcn3cCdhRaUALZx9oW8uRRZp235HK5931d1WX8+PFuiimmcH/88UfV+1aHfxNYeeWV3ZAhQ5z3C/67UiUREAEREAEREAEREAEREIFWJeCNWvP5E47PWP6cUMfaltyEMuu8pZCSZwqerWNFL1PZq4Wih+UuFqx5nTpxekm1CPzyyy9u3LhxSXfDhg1zSy21VLKtggiIgAiIgAiIgAiIgAiIQOsRKKDomZKHAmhKHutmK3ooeKbspRU8s+x19m06eUXvPb+umvz55595St3yyy/vnn766ar1r47+IoCldLfddnOXX355qMB6+vHHH7sZZ5xRiGpIYMyYMW706NEORdv/7tTwTB236+mnn95NNdVUbu655+64F6krEwEREAEREAERaDgCXtHr7i8ahQ5rjCl2ZuEzhS9W8qzMS2WymBLn6/JcOGMFjzam5Jlyx3beUk1F76effgqKBi/BWPVQ+iS1JfDtt9+6GWaYIWEt5aP6vI855hg3ePDgPAtq9c/SmD3yd2LkyJFurrnmakwAumoREAEREAEREIEOQyBS9Ey5i9coRizUodRRjtem6DWJuunbNZF8/8kmu6tfcdxxxwVLBz1vuumm1T+BemxCAOvIdddd16ReFdUh8M0337jjjz9eSl51cDbphQ8TPXr0cLfeemuTfaoQAREQAREQAREQgQ5IoKSOVo5FDyueLWbZy7Pm+f1Vdd3k6zxClM1Ro0aFsn60DgFjL4te9XgbU+uROZGaa2o0Wr4+++yz3aBBgxIX2O233z5xRW557+pBBERABERABERABFqXQBGLnlnyzKpn60yLXjUUPZuj9261ENiLcc+ePd3bb79drW7VTxkEjL0UvTJgldHk119/DVFjaUowoTfeeMN169atjCPVpBIC6Tm9en4roae2IiACIiACIiAC9UTAv4/P78eDa6bN0TPXzYoUPSx1dSvkeZOIQHsmQLAQhCA3zD2VklebuznxxBM7UrHwcQjZeeeda3Mi9SoCIiACIiACIiAC7YRAXSt67YShhikCBQlYIKHTTjutYBvtqA4BlL3nnnsudEYU2U8//bQ6HasXERABERABERABEWiHBCpR9GzCn63b4eVqyCLQegQsZcU555zj9tprr9Y7cQOfadpppw1Xj4K9zDLLNDAJXboIiIAIiIAIiEAHI2A6mK1LXl4lil7JztRABETgbwKXXnpp2Nh3333/rlSp5gQGDhwYzkGeQokIiIAIiIAIiIAINCoBKXqNeud13TUnQOJ5SesT6N27d+ufVGcUAREQAREQAREQgTojIEWvzm6IhtNxCHz22Wcd52La0ZUsvfTS7Wi0GqoIiIAIiIAIiIAI1IaAFL3acFWvIiACIiACIiACIiACIiACItBmBKTotRl6nVgEREAEREAEREAEREAEREAEakNAil5tuKpXERABERABERABERABERABEWgzAlL02gz93yf+5JNP3Lfffvt3RYHSSy+9VGBPdvUhhxySvUO1IiACIiACIiACIiACIiACHZpA5450dblczk011VRulllmcR9++GFZl/bggw+W1Y5Gffv2zWu7+OKLuxdffNF16tQpr77Sjdtvv90ttthibpVVVil66Lbbbuvefvvtom1s5/jx4x1JuskrdsQRR1i11s0gcMstt7jNN9+8GUfqEBEQAREQAREQAREQARFoGwIdStGbeOKJ3VVXXeX22Wcfd9ttt7lNN920JNW1117bYSlbYoklCrbdf//9HUmvUSRj+eCDD1znzp3duHHjgrI3YMCAsJvtm266yfXv399NNFHTnIb/93//51DELrjgAnfqqafGXbprrrnGrbXWWqEOi5wl3c5rFG3QD9eaJeutt55DSZl//vmb7J577rmdohM2wZJZgZJn9/G7774LynNmw2ZW8hyNHDnSrb766k16+OKLL9wbb7zh5p13Xte1a9dkP8/iyy+/7Lp06RL2JTuqUCDZ+NNPP+2WXHJJN8UUU5TV4yOPPBIYrbbaagXbcx1//PFH0d+1ggdrhwiIgAiIgAiIgAiIQMUEcN9kwSyF4jeJXybzy+R+mdIvU/tlWr9M75d/+mUmv8zil9n9Mpdfuvmlu3/xrJr4/tCocosuumjZfXrFKudfxkP7Bx54IDfppJPmrr/++pLHc55ll10251+yCy7zzDNPGE+6M//imptmmmlyu+22W96uzz//PLN93MgrpEmbs88+O/fYY4+F3VzD0KFDc15JC/u9ApAc1rNnz6RshR9//DG0M2blrjfZZBPrIm9tx+dVaiOP8THHHFMWkXJZ3nDDDaF/7mVatt5667DPK1B5u3799dfc9NNPn7v22mvz6quxQd///Oc/c++8805edzynXvnL+Q8q4Xfzhx9+SPZzrfb7l1RGhV9++SU311xz5byVOaqtTfHdd99N7ldtzqBeRUAEREAEREAERKB2BPx7VXe/oGOha6FzoXuhg6GLoZOhm6Gjoauhs6G7ocOhy6HTBf0OcxMFhLIt1Nm+0NBv20Hx2pTDTv5S3/VtqiJmPfGKnnv11VeL9unPG6xqWCEom9xzzz1us802cxtttFGwrll9es25mmvRoy/O+dtvv7nJJ5/c7b333qF75tzdfffdbq+99so7Hef697//Heo4buWVV3a33nqr8wppcN2kbsiQIe7EE09MjuOYKaec0v30009uwQUXbOK6Sf0yyyzj3nzzzeQYCl4xCNefHkNeo4wNYx+zzGjWcFWjR492s8/O79nf4pV89/333/9dkSpVwhIX22OPPdYNGjQo6YXnyH9kCBbZ4cOH5z3fWHF5vn///Xc3yST8XldPeJ651qeeesr16NEjnHfGGWcMz/iVV17pllpqKffCCy+4NdZYI7FmY/XkWeb30K47HtGWW24Zfg9b47l67733Eit2a5wvvk6VRUAEREAEREAERKClBPy7FO544/0ybsKa8p8TyvGaMgtKkK3tg3fQ+nx9+xRvAQkvorxc4vIYC26LTzzxhPPWOuetE+7rr7+Od+eVe/funbddyQYvtSh5yPnnn593aHqbF3JT9DjOWwLdddddl7wYn3766U2UUubvPf7443n9ltr43//+555//nl31113lWqq/WUSmG222YIrcOwm6y1aDmXv6KOPdgcddFCZPWU323DDDd3999+f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GPtilqPWG037PpNYts39e++99xLX2np4ju05ILiMot+2zTOhs4qACIiACIhAeyLg3x2YIzTeL4TyZ83CnLH0mjoW3MFsTTm4h5mS57clIiACIiACIiACIiACIiACIiACHYFAu3Td7AjgdQ0iIAIiUC8EmPOMy3lWwJ16GaPG8TeBGWaYwc0yyyxKm/M3EpVEQAREQAQyCEjRy4CiKhEQARFoBALHHXecI3rvxx9/3AiX2+GusU+fPu7kk0+Wwtfh7qwuSAREQASqQ0CKXnU4qhcRaELAUgw02aGKmhKwHII1PUk77/z666932267rRs/Hld/SXslQKoXotMSfZk8lDYftL1ej8YtAiIgAiJQXQKao1ddnupNBBICuFZJWp/Ayy+/3PonbWdnJDVMrORh1SORPcFrtNQ/gxdffDHJ58qjh9ut5dlsZ4+ihisCIiACIlBDAlL0aghXXTc2gU022SQAIOG3pPUI7LvvvuFkevHNZr7OOuskO8gRiWK3/fbbu3/84x9JvQr1TaB3797upptuCveOtck777xjRa1FQAREQAREIEmtIBTtgABf4L/99lv37rvvhjk1Y8eOVfCEOr5vG264YRjdwQcfXMej7HhD++WXX8JF9e3bt+NdXBWu6KGHHgq9TD311G6qqaaqQo/qoi0J9OvXLzn93nvvnZRVEAEREAEREAFZ9NrwGXj77bddz5493RxzzOGmmWYa16lTpzDHgnkWWUvnzp3DV/cFFljAde3a1U0//fThRS2rrdXR58wzzxza33jjje6PP/5owyturFOvttpq4YKvuOIKt9122zXWxbfR1fIRBJlyyind7bff3kajqO/T/vknaXac+/777+t7oBpd2QQGDBgQ2g4dOtQ9//zzZR+nhiIgAiIgAh2bgBS9Vr6/RLmba665glLXq1cvN3z4cPfZZ585XKjsBayaQ6JP5m8QVW+rrbZyBAjhJfjmm2+uyfmqOfaO0Nckk0wSLuPqq6/uCJdT19fAR4yllloqjHHw4MFusskmq+vxtuXg7ENQW45B564egX322SfpbMyYMUlZBREQAREQgcYmIEWvRveff7b885111lnzrHPHHnusGzVqVKJk8cKFNQ+lb8UVVwyhsu++++4WBUQYN26ce+GFF9wOO+zgVlhhBUfOJVM4uFxc27bYYosmFsTu3bvXiEbjdvv7778nF8+9Puecc5JtFapHYNiwYeEjBlYqPmbst99+1etcPYlAnRNYZpllkhHy4VAiAiIgAiIgAhCo6/QKX331lbvvvvvcuuuu2y7u1k8//eQefvhht//++5fMS0X+oyWXXNJheYiVsGpcKO6a9P3f//436Y6ACygZuPXceuutmS6c77//ftJeheoRmHbaaRM3OZ4NgoRss802wfW2emdpzJ6Yt0pwEX7vTC677DIrai0CIiACIiACIiACDUugrhU9vkyut956yc3B8sV8szPPPDPUt2VUPV4w+/fv7whz/dFHHyVjzCocfvjh7qCDDnJdunTJ2t0qdViTUDLS8ttvv4XgLlj+lH8sTac62999910ImmOBL4gKaZEhq3MG9QIBXJKfe+45t/DCCwuICIiACIiACIiACDQ8gbp03dx1110zrVwoIlidiGZIYBIsJauvvnqr3UQsZLhX8kLJ+ZnnVkjJm2KKKcLcO9wkTzrppDZV8ooBYh4TL8a4vGGRXHzxxYs1175mEuCZIfQ51lZJ9QnwIYMotFLyqs9WPYqACIiACIiACLRPAnVp0fvPf/7jWGIhmAVWMXKSEWAEV0QUP6KM8ZJXTLAEkrwaxZBAKESrnG666UKqAhQ1lJzRo0cHRYegKJUIVsVVV13V7bHHHm6zzTar5NC6a4syomTTtbstPXr0cMyflIiACIiACIiACIiACIhArQnUpaKXddHbbrutY4kFpez1118PSiEuWxZaPW5DGYXQ3BJfeuml9O6S21jvSGmA6+Miiyzill566ZLHqIEIiIAIiIAIiIAIiIAIiIAItBWBdqPoZQEi4e/yyy8fFvZj7fvwww+DCxcBR8hT98wzzwTrX9bxWXVY/uaff/4QlRKFDuvfPPPMI5e7LFiqEwER6BAECHpFUJtS3hHNvdhvv/02eFQUcl22nKK1On9zx91Wx+G1kp6Dzv+2bt26tdWQdF4REAEREIF2SKAu5+g1l+OMM87oCDPdt29fd/HFF7unnnoqcfPE1bOc5fPPP3ePP/6422uvvUJOrvnmm09KXnNviI4TARFoFwQIenXeeeeFsZIaBoWr0IJCaJJuk6XI4Q3xj3/8w5ECI0tQajbffPPgOp+1v5w6EoYzFhRKEyIPF1tWW201a+qOPPJIx4fD9957L6lLX1vW9llnnRXa8z+D6MlzzDGH+/XXX0MdHx6zjknXkd80lk8++STM6eb/VSzzzjtvRR8t42NVFgEREAERaEwC7dqi15i3TFctAiIgAtUj8M0337jZZ5/d7bLLLqFTFBaUsywZMWKEI9CUCR/XTFBwCD6VFlzqUaqIUozljrnAsRBdmSBb6XraENX4jDPOiJvnla+//vqwfe211zoUJIJJjRw5MtSVctP/5z//mfR14oknhqBZeIigoCHxtSUNo8Iff/yRbK2yyirurbfeCtzIW2pTBZIGFRRQejn+tddeyzuK8abrrMFiiy1mRa1FQAREQAREICEgRS9BoYIIiIAINBYBIsGiHKGgYWlCsL4NHz48D8QHH3zgUCbMxdN2fvHFF470MeQDJUULipkJihAKEIG1UCKXXXZZR4qRtKWKKMq0TVsDUfxuueUWd8MNNzgUzFj69esX5mebose+J598Mrjav/rqq2Gs1KFEzjbbbBTzhOudc8458+qwBnKNF1xwgdtzzz0d11ZMrrjiijwLIi7/WCe33HLLhOVMM83ksJCWKw888IB74YUXQgohUzjt2EknnTRRQq1OaxEQAREQAREoRkCKXjE62icCIiACHZjATjvt5MiliZKH8kPAqxtvvLGJ0sV8ZYJfxW6bhuXBBx8Mit7HH3+cKDjsQ7l79tlngwJG/3feeWcIZjVkyBC3xhpr2OEOxaxnz54h4i95UrH6mbXt0UcfDe1QomIhLUyW3HHHHYmSl7W/WB15TltyPH1znfBrjuDautFGG4VDl1hiiaAkx/2g6K255ppxlcoiIAIiIAIiUJSAFL2ieLRTBERABDomge+++y7kdkSBw32TOWAE/Igta6eeeqo75JBDAgCUDKxxZvmjkuNWWmmlsP/nn392Xbt2DW123313R0AscnNafwS6wkpmx48fP96xkPaGOW6TTz556AeFxsqhosiPtHVw5ZVXLtK69C5zgSRn6s4771zwgLRrJteEoggPu76CB2fsQNlmfvnJJ5/sDjvsMLf33nsH62fc9Ouvvw5W0biOc910001NrJNxG5VFQAREQAQal4AUvca997pyERCBBiaAMta9e/fgpojljITzRBlGUKAITIKSR5AS6h9++OEQtARXTVwwka+++irkKKVMjkjarbjiiiHaMcpQ1ry7N954Iyg1c889d0iJQ/5Rmw+Hkmd902cpMeWScSCck/FWIriHMr/PZNCgQW7HHXcMi9WVWjPHETdReJ100kkhMEupY+L9WCiPP/54d+ihhwZFj8A4uL3GghJNGiGJCIiACIiACJRLQIpeuaTUTgREQAQ6EAGsVswpw3o2zTTThKiYl112mbvooovCXDuUr7TFjLlxtF1wwQXdNddcE9wtzaKHoodFbJtttnG9evUqGNCFtAFY+jg3Fqlzzz03uIWCFoWHoC7sK0dQCm0uW3MsaZyDyJyMF4slyhqKXqXy6aefhkOwXj799NNhqbSPo446KjkEzgTFiQVlFoUyFq6Z6NIogRIREAEREAERSBOQopcmom0REAERaAACFj0TF8U99tgjpJM5++yzg5J3yimnuH322acJBdwEhw4d6tZdd92gnDEv78orrwyWO+b4YfUjSiaWPJSmYoLCh0UOxTEWm59HHcFfWiIonVnz+WJF0pSkzp3z/x1Sz/Wl5YknnkjcVdP73nzzTYelsqVy8803Z1r0LKJoS/vX8SIgAiIgAo1BIP8/W2Ncs65SBERABETAEyDCJtEmzXJHmoJLLrnEkW7ghBNOKMiIOWXIUkstFdwNrSFum1i1iB6JkrTbbrsFK9To0aOTc2CFQpnDQoVCaOcmPQEBXJ555hnrzt1///1JuTmFSy+91M0666xNDsVqiNtqKbGxWbtSVkOCylRD+vTpk9lNofOnx5l5sCpFQAREQAQajoAUvYa75bpgERABEXDu+++/D0oe6QS22267YD3DjRJrHUFBignpFJC0tQwrHULUyIEDBwZFb9VVV3UokLGk55+xD2sgOfewBKZdFONjyy0T/AVF0iyX6ePId1dtIWookTuXW265FnVNhFLSUZgQiAWlvJCiZ+20FgEREAEREIGYgBS9mIbKIiACItBOCPDSj0Jk88MqHTbRNklz8MorrwTrHXnhTFGLLUTkxyNgSZZlDNdKgo+QP+/00093KCQof+SPIxffxRdf7M4//3xn+e6wBOIiiQtoWg4++GC38MILuznmmCOx8qXblLNNZM/111/fff7552Gu37/+9a8wDsZFpNGrr746RLVM5wosp+9SbTg38+uac0+OOOKI0D3Bbp5//vmw2Pnuuusu17dv3yaKte3nHpiQA5ClHqQlz2c9jF9jEAEREIH2TkCKXnu/gxq/CIhAQxLYf//9HXPqFlhggZBge7311quIA4nEsaK1ROycPXr0CMFMTFmx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DfP7/vjjj8z9W2yxRXg+4p133323o765UsgFtLn96TgREAEREAERqBYBKXrVIql+RCBFACse8vbbb3cY97rUJdbdZpcuXdyUU04ZLDS9evVqdxEo6w5ojQfEPeKDyIknnph3ps022yxv2zbSUUatPl7vt99+YZPgPLFsvfXWjoA1fAiIpV+/fomr6MCBA8PHgnh/VhlLPYFvJptssqzdqhMBERABERCBuiAgRa8uboMG0ZEJdJQ5VO3lHhHI4/zzzy/q/tderqVRx3nbbbe16NL5yNK/f/+8PlD0Ssm9997rcMU0wTLIfL4ePXpYVVjjJlzMvTSvsTZEQAREQAREoI0ISNFrI/A6rQgYAeYkEXnQ5vNZfbXWvJDSd6H+maOEZaLQ/mqNo7X6waKDoidp3wRGjBiRBEYh8fsss8zSKhe06qqrJuf58ccfg6IX17ETRU8iAiIgAiIgAvVOQIpevd8hja/DE2BuGYree++9V/VrJcgE/T///POOBNNZQvTGls4zIjBFS/KPjRo1ys0555xZw1OdCLQqgaeffjo5n831i+uSnSqIgAiIgAiIQJ0TkKJX5zdIw+vYBLC2EVb+hRdeSC60mGXNArwQeTAr2bPtt85Q7qjr3bu3++yzz/Lc0qwNit5FF11km8kaS+ODDz6YbKcLG2+8cahiLP/85z8dictNWS12DdYPofSZTzd+/Hg311xzuc8//zxYbR544AG3zjrrWLOCa5JsK3VFQTwNveP7779vtoWaZ9nEInzGdbZPaxEQAREQARGodwJS9Or9Dml8HZrAM88845ZddtmQFsAuNK2sUU+dBXdhe5JJJnFvvfUWxSDMLTr44INtM1mPHTvWDR482B1++OHuX//6l7vmmmuSfRS+++670NdJJ53U5MX4+OOPd5tsskle+3jDxonb56yzzhqSlqO02RynQw45xC2xxBLxIaGMchvPn6I9VkcCZbz00kthHV9bkw58xccff+z+7//+L2uX6joIAfLixc98JZdFMvnLLrusySFzzz13k7p0xdJLL51U/fDDD47f0biOnfrAkCBSQQREQAREoI4JSNGr45ujoXVsAg8//LBba621ghKH0nT//fcHF8r0yy1zzs4999wkMiBUaLPggguGNVYHrHWx4ApJAInRo0cHJezAAw8M1rN99tknvLRiceOcWOGeffbZ4HaJskbu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K8MmqXvioCz8v1lggQXCR8a0orf11lvnKalxfyqLgAhUn4AUveozVY8iUFcE+EL8/PPPh/l0LRkYUdImnXTSpItTTz3VHXzwwcl2ulBIMUy307YIiIAINDqB6667LgS+ioO7xEywxO20007B8kZETJQ9k3XWWcexxGJKW1yHFfCWW26JqzLLWPiefPLJzH1ZlVl59M4+++yQl++zzz4LLqQcx9xC5Lzzzgtr/RABEag9ASl6tWesM4hAmxHADYcUCIceemizxkAEuHvvvTccm3a1+e6770JI7kId8zJCImCJCIiACLQHAljJnnrqqaBwteZ4J5lkkuAWTyAWFDTmscVu8owF74iDDjooDOvkk08O0TFtjLhtkiu1lJAbj8AoJsyjixVGq+fcK664om02a00+vbFjxzrSRJCInfMyX5y6rEAyzTpJOzyIewz3119/vS5HT+RY0iN9+umnNRkf7yRZHyGaczLeQbAeW75J+l5sscXca6+91pzuOuwxUvQ67K3VhYmAC3MuCGvNP93mCJE2eelIi83zwMqHS0+W9W7cuHHpw7QtAiIgAnVLYMCAAY4XXSIKxwpRLQd85JFHBqUO98diwssxaW4KSdbf6XRbFMK4nf0dT7ez7S5dujhepgsJSlyxKKG48DPuu+66K3TB/4pGVvKAgFKy9NJLuyWXXNJxz0lL1BqCEsT/c6ZycM9wu+Uj7hNPPJF3+vQzkrfTbxBV1Syz6X2Fts1dmDHwO0a07uWWWy405/myOaqFjqf+tNNOSwL7WLtDDjnEMR/0iCOOCFU8a/WqQNuY22ItRa8tqOucItBKBPr37++I0FbJRPp4aCQDNmEiP1Y65lwccMAB4ess4bXXXHPNEN3z4osvDlHdmNBPZDcifW622WZhUj51vFTwNZck7GkhRx8LLwYk7J1//vnDP8M55pgjvHil22tbBERABKpN4JxzzgmWDP4WIbyMZkUVruZ5STHQnDQD/B3lJZe50FgE05E4s6wmRPW0qJulroGXcmS11VZzjzzySGZzs6Rk7pxQyf8g3FIRFByJc5deemlQgO3/8r/+9a/w/7SWbHgell12WYfyjnLH//Kzzjqr4lOOHDkyPHOlDkQZZP5n586dk3mhjOHaa68NH4dxDyagG9NByL1YSHjv2HfffR2pQmLheN4n5p577pD6w/ZxfV27drXNvDVj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xkcffdQVS6K96KKL5gXIiBNbo0B+8MEHbvjw4SHxvM3fi8eisgiIQHUJSNGrLk/1JgIiIAIiIAIi0CAEll9+effAAw+Eq3311VdDyPhKLj2t5Nmx5557bki3YNtZ62OPPdZNNtlkyS5SMBCqPhYiGKYjE6LIHXDAAUmzMWPGhDJREwnGEiuQBIaxYCxEQowTpq+55ppJH1a46KKLMufo2X5y/dEfYx01apRVt2i98sort+h4HSwCHZmAFL2OfHd1bSIgAiIgAiIgAjUjMP/88yd9N0fRSw5OFS699NKQ/ytVnbd56KGHJtY1ApyQGw+3SFwxUaSw3JFX7M0333RESTRB2cJltLWE/HwolwRjwSWUfHuEuSfJdTXEFNFq9KU+RKCjEZCi19HuqK5HBERABERABESgVQhsueWWbrfddnPfffed23XXXd32229ftfMWio6IItepU6fkPESyJDcZycxx3bzyyivDPD3qCE2PayZz77AekrNs9913D7nwsNBVK3fgQQcd5Ei3sMwyy4Rz2eAmnXRSt8Yaa7j99tsvKHqsua7rr78+KJu9evWyphWt41yDAwYMqOhYNW6fBHjOH3roofC7xnxSPmTgcsxzz/ONdZvorkR65dnn4wauyFiei7kbt08a5Y9ail75rNRSBERABERABERABPIIbLvttu68885zWK7aQgikQvh4rHppueyyy/KCnjBnDgvfp59+Gl6Cjz/+eHf00UenD6t4+/TTTw/HoEyus846bocddnAocbhVWtAYFDxezA877LAwR2/VVVdN5gZWekKSYUs6JgGek9tvv93hNoxih1LP8/rDDz80+4JR/EgJgVtynz59gvswVuX4g0mzO6/zA6Xo1fkN0vBEQAREQAREQATqlwBBS1D0EAKOFLLEVXoFhxxySOYhcf/kxEPJw9rBuXHVjIW6oUOHJlVYA7GA8eJ76623ut9++y3ZF5etkiTpFjRl3LhxjoidNq44emc8Jjs2XvOCPXbs2OBaSjoJXDgtEfZjjz3mVllllbh50TIv51wHctxxxxVtq531S4Bn5oYbbnAkQbf7WavRYv179913Q/fPP/98WPOBJhZ+V7p06eJI0s4z2lFEil5HuZO6DhEQAREQAREQgTYhgDKE+xiCSyTuZC2VU089tWQXWNA233zzJCgLVjKUKKwXpqDRCXP3yGHHy+zAgQNDv5tuumlYc8ycc84ZgqPMN998oc5+YBGMhT7KGZcdw8v8f//736Dk4dZpL9Cssdrg2tnHW1hKKYrWHy/rphRw7VgHJe2HAFbvm2++2WEBfuWVV0oOHKUel8xpp502WKyxFPNsMzeW57tHjx7JM2Wd8YzwuzhixIgwz5Xnj5QgfGjg/IUs7zyDWA/Nynfaaae5Pffc07pt12vUVhYcvlH8JvELYZzwAZjSL1P7ZVq/TO+Xf/plJr8wq3d2v8zll25+6e4BSURABERABERABBqcgH8nyLH4F7KGIjFkyJBw3Xb9/gU15+fL5bzLWUkOV111VW706NGhnQ+qkvNz/woe45W2XN++fXP+pbRgm0p2eNfP3F133ZWc3471Cl3OR+S0zSbra6+9NuctiU3q4wo/HzD3448/5rxyFlfnlYtdh5/7mIPNeuutl8fWu6nm9dHRNxZccMHk+r0lKnfdddfV/SX7eXQ5H4U1N8000yRjt9+NeO2VuJx38Q3PYFtclLd457xlOOeDAxUd51ZbbdWqw/OMuvsFHQtdC50L3QsdDF0MnQzdDB0NXQ2dDd0NHQ5dDp0u6HcTTSj4laNsCzttX2jot+2geG3KYSd/9X/ZRH1DiQiIgAiIgAiIQGMSwGqE8OWduTWNJKQywI1SUjsCWAGxBnnlp3YnqbOeme/49ttv542KKKa9e/d2N954Y159W29cfPHFwS344YcfLmqp3XjjjV2/fv1CFNa2HrOd339scUcccYS74447ggXQ6ll7RS8EEYrraln2f0cJ6TveL+MmrCnjs5xeU8eComprU1oTZc7vS5Q8U/BsLUUPOhIREAEREAEREIGSBBpZ0TM4c8wxh2P+nKR6BEjHgIJHFNFGE1xvyYkIg1JuwXxs6Ny5c4ioSsTTWsiLL77o7rzzTnfOOec4b7EtqtBx/q5du7q33noruF+a+24txlXtPr0RK8xjRaFeZJFFpOhVG7D6EwEREAEREAERaF8EpOj9fb9ITO7dIlsUMfDv3hqv5N3+3Prrrx+sPksttVTjAci44g8++CBESr3llltC7sSMJplVCyywQFBWSHHBhwiUQfIt2oICxvw15kASmIc1HytefvnlEDSF85ab5J6/AcyhJGfiueeemzkeVRYnIItecT7aKwIiIAIiIAIi0AYEpOi1AXSdsuEJEOTkySefdDfddFNIW4E1qtbC7zoRU7F2ERiH3HWS6hCQolcdjupFBERABERABESgigSk6FURproSgWYQIMKkD9ji3n//feeDBIW0GESebKkQUbZnz57BUtetWzeHayhJySXVJyBFr/pM1aMIiIAIiIAIiEALCUjRayFAHS4CItDwBKql6BFoRSICIiACIiACIiACIiACIiACItCBCEjR60A3U5ciAiIgAiIgAiIgAiIgAiIgAhCQoqfnQAREQAREQAREQAREQAREQAQ6GAEpeh3shupyREAEREAEREAEREAEREAERECKnp4BERABERABERABERABERABEehgBKTodbAbqssRAREQAREQAREQAREQAREQASl6egZEQAREQAREQAREQAREQAREoIMRkKLXwW6oLkcEREAEREAEREAEREAEREAEpOjpGRABERABERABERABERABERCBDkZAil4Hu6G6HBEQAREQAREQAREQAREQARGQoqdnQAREQAREQAREQAREQAREQAQ6GAEpeh3shupyREAEREAEREAEREAEREAERECKXis8A1tttZWbaKKJtNSIweGHH94Kd1GnEAEREAEREAEREAEREIH2Q0CKXg3v1W+//eZQ8m688cYankVdn3zyye7//u//3J9//ikYIiACIiACIiACIiACIiACnsBEfjFlj7It1Nk+yiydMtbUdWZfLpd7168lEwh8//33brrppkt49O3b1/Xq1ctNP/30SZ0KzSfgnzc3ZswYd/755+d1Qr1EBERABESg7QjgwYLMPvvs7tNPP227gejMIiACItBOCfi/o/P7oY/3y7gJa8pYNNJr6lh4AbY15fBCjJImqTIBlI1VVlkl6XXvvfd2//73v5NtFapH4KCDDnJbb721e+aZZ0KnO+ywg7v88surd4IG6Omll15yDz74oBsyZIjDCi2pnMCUU07p+JiDBX+OOeaovAMdIQIiIAIiIAIiIAJVJmBWO7o1a57V2VoWvQqhd+7c2Y0fj8Lt3NChQ92qq65aYQ9qXimB7bbbzl199dXhMFn1StPj+eQ5ldSOAK7EZtmo3VnUswjUHwF77mXRq797oxGJgAi0DwLVsuihxEmqTMCUvLnnnltKXpXZFuru4osvdtNMM03Yrbl6hSj9XS8X4r9Z1Kq00EILOVy4JSIgAiIgAiIgAiLQFgSk6NWQ+ssvv1zD3tV1TGDyySd3d9xxR6i64YYb4l0qRwTefvttN8UUU7gffvghWPT22WcfhwVUS/UYbLjhhsGSB2vm6f7888/RHVBRBERABERABERABFqHgBS9GnL+xz/+UbPeP/vssw4TZRJrXFqYK/bII48k1eW4Y6622mqh/XvvvZccp0I+AQIC/frrr8H6+ccff7hzzz03v4G2WkzgzjvvzPvdnGqqqVrcpzoQAREQAREQAREQgUoJSNGrlFidtL/rrrtCSoHmDAel6YUXXghWHI43a06lfaEwNGdJn2fQoEFu5MiRedX0u9FGG4U6xjfxxBM7LCSS5hP46quvkoM//vjjpKxCbQjce++9telYvYqACIiACIiACIhAGQQUjaEMSNVuMs888zRRbEqdI7ZooQTtv//+7ttvv808bO21186sp/Kss85yPXv2dH369HGdOnVyvPAvvPDCIVLlmmuuWTJ4RDwOLJYXXXRRcq5//etf7sADDwz9UXnAAQc4lIsrr7wytCHM9hFHHJEomFRiVfrpp59c165dQxv7MdlkkwXljm0m9n/99ddu8cUXD8qfrFBGqbL1jDPOGA7AdVNz9Cpj15zW6667rhsxYoRbYIEFwkJZIgIiIAIiIAIiIAKtRUCKXmuRjs7z5ptv5ik70a4mxW+++cYtuuiiefXPP/+8+/3331337t3z6tl49NFHQ6j8JjsmVDA3CznyyCOD0rX++us73EDXWGONCS2c22233fIUOHY8/PDDbq211kraWIFolyYoerhPrrPOOqHq8MMPD2tr8+qrr4ZzWnvWd999t+vXr19cFcrMuYujQqJUDh8+PIlm2uQAVRQlwHNkwv2VtA6B+ecnDY4LH3b4QMNzLREBERABERABERCB1iAgRa81KKfOUcmcHRS6tGCNm2WWWcLLY+/evd1tt93miPCJmHKE4oZyFouFvKbusMMOC/tff/119+OPP5a05GWNg36+/PJLVokQZdDqzPpn2999913SjsLNN9/stthiizCfafvttw9z8kaNGhXaYK3EXXOZZZYJidHHjh0bglpgAUSs77ChHyUJHHrooUkbcg9KWpcAvz/33HOP23zzzVv3xDqbCIiACIiACIhAwxKQotdGtx5ljzlnpqBVOozNNtvMTTLJJEFBQ7mjXImgQA0bNiwcwlwiFK5iUihM/EwzzZR3GAmj05JuY/v32GOP4EKIAop7J+6auJOixJkih8umCdd5xhlnJBZDq9e6NIEXX3wxaTTttNMmZRVaj8Ann3zSeifTmURABERABERABBqegIKxtNEjYIpMc06PVeC8884Lh3700UeuS5cuFXVz0003ORLZYmWYcsop3d57713yeKJgpgWXT1PK7Hpw3bQ62u+yyy7J9rhx45y5EKI4YrXDJXOGGWZwc845Z9hHDkLy4NHHiiuu6N5///3keKx5BG5hjqGkMgI8JyZTTz21FbVuRQL/+9//WvFsOpUIiIAIiIAIiECjE5BFr42eAJSe6667Lig6xYZADi7axoLLY0uEOXEsWNKWWmop9/jjj5fsLu12yQGVBvTAWmfHYFVCoRszZkxwHb300kuD0hkPBPdUm1MY16MExm6o8T6VRUAEREAEREAEREAEREAEnJNFr42eAhQVLHEoPsUW2sRKDQEd2LYFRYjjbXuuueYqeUXWloblKHm0e+utt1glst566yXnjPtLGkwoXHLJJU3amVUPhQ2rILLxxhtPOMKFSKCkVnjqqafc8ssv3+R4LFK//PJL0l4FERABERABERABERABERCBfAKy6OXzaLUtrFuEXy81Rw+lCHfFWJZYYomwiaJEJEvSDphgBbOAJlZXaJ1W3tLtsCbi2olcf/31ebsJLMH5Y+Ga0rLzzju7//znP3nVKIYmu+66q0MZNCEAS7rf+eabz91www1u3nnnDYm+aRP3YcdqLQIiIAIiIAIiIAIiIAIi8BcBKXp1/iQwhy3Ol0d49pdeeimMGtfPAQMGuPPPP98tu+yyyZWUUoJQpKabbrowRw+LGvP1qEsfR6TL5ZZbLvS7vY+KedpppyXnoD1J20sJASjS7cx6Z6HmCQTD+D/88MPgzhn3Se63N954I4SlHz16dLBennTSSc5SN8RtVa4OAZ43LL12n+JeuRcE/unRo0dcnZSHDh0aLLI77LBDUtcWhQcffDCkH+nWrVuT03NtRKvVXMUmaFQhAiIgAiIgAiLQgQhI0WsnN5Ok4um0DLfccksYPXnrUP6yXmqzLu/yyy8P8/6uueaaonm9ZpttNvfaa69ldeEIzrLlllsGZTGzwYTKhx56yLHEYhY7C/BCBFGERPJpIWjLBx984FD4sGTuuOOOLk4VkG7f0bdHjhwZcg/us88+Vb9UgoVgESblxiabbJJYVi+88EK3++67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QAREIIfAEr7NvHrUbaHNtlFnWSqnpA2xuJQXEi/4UuYJWEIUxFWj7d133w1TFnBcQiEZ94aA6927dwilHDlypLv++uvdkCFDslM/9NBD7qCDDgpz2/Xv3989+uijbsSIEVk/jkOyDkSATZye7ZxUmAD9jTfeSFrbd5XxZfvvv3+Y1mHzzTcvOznsGSOYFz5a1rGLrti72bdvXxdPVt5FcbTpbccJcNrivwVtevE6uAiIgAiIgAiIQIcR8N9r6/iTf+QX5kqjZCH0LS1pY0F0WEk9iBATc349E3nWZqWEHnTqMPuYbquPOxKu8BFpRiIUwh+ZN2+rrbYKos62xSWeHK6N6RQIkySUMvayIfTwPJDgZcsttwzTNFSbA4/pE5iw/bDDDnOISDIL5nncBg8e7O6+++74cnLr8+fPDx4nEsq88MILwcPINA14MSsZ54UJ4xAl9IpJXXnllSFpDj0Q7ffdd59bc801i3fQlroJEE49ZsyY8B6z88yZMx3zTcpEQAREQAREQAREoBYCEnq1UOqgPib07PSIkAcffDAkMOnRo4c1d3iJ2GNKhdNPP909/vjjhddDeCees+OOO84xZ19nMMJGzznnnDDeL50YXkKv+hPimbbVDxHVz941epAgielGtt12265xw7pLERABERABERCBhhBolNDDWydrYwJ40vr16xc8TkxJcOmllwavWRufNvfwfNzfcccdbosttgjz2BH6mSfyEAJk1pwwYULwFOL56Swijxvj45l5+pg+gnn6evXqlTu2MBeCGsP4SmFoWwIkHJLIa1vGOroIiIAIiIAIiEAxAQvPpAd1WxCAto06i8boeQj1GEJkypQprIgSgwAAJXdJREFU7qyzzqq6G4kxmPycEC/GoJF4ZP3113cDBw6sui8d8M5NnTo1jLFDlBHq+MQTT4TwS8Ihq9n2228fxu3tvffe1bp2+u1paGunv+AOvECyQh5zzDHukUceCe8Lk6nL6iew7LLLuk022cQNHTrUkdU0L6FR/UfVHiIgAiIgAiIgAl2RQKM8eibmYGgiz9qslNBbxDcM4UE44WWXXRayHdZzuG7durnu3buHefIIBWOdMjYyaCLmWhOKxzWRuXOddRjzKRMBERABERABERABERABEehIAhJ6HUm/ged+5pln3BVXXBEWpjvAw0JilUYYXkJEIeGZTE8watSoRhxWxxABERABERABERABERABEWgjAhJ6bQS2Mxz29ddfdxMnTnTTp093zz77bJjvjgnN8dqZGOQ6CQ/D20f2RDJpkjCFzJmEj5FJUfOkdYanqWsQAREQAREQAREQAREQgdoJSOjVzko9RUAEREAEREAEREAEREAERGCxINAoocf4O5kIiIAIiIAIiIAIiIAIiIAIiEATEZDQa6KHqVsRAREQAREQAREQAREQAREQAQhI6Ok9EAEREAEREAEREAEREAEREIEmIyCh12QPVLcjAiIgAiIgAiIgAiIgAiIgAhJ6egdEQAREQAREQAREQAREQAREoMkISOg12QPV7YiACIiACIiACIiACIiACIiAhJ7eAREQAREQAREQAREQAREQARFoMgISek32QHU7IiACIiACIiACIiACIiACIiChp3dABERABERABERABERABERABJqMgIRekz1Q3Y4IiIAIiIAIiIAIiIAIiIAISOjpHRABERABERABERABERABERCBJiMgoddkD1S3IwIiIAIiIAIiIAIiIAIiIAISenoHREAEREAEREAEREAEREAERKDJCEjoNdkD1e2IgAiIgAiIgAiIgAiIgAiIgISe3gEREAEREAEREAEREAEREAERaDICEnpN9kB1OyIgAiIgAiIgAiIgAiIgAiIgoad3QAREQAREQAREQAREQAREQASajICEXpM9UN2OCIiACIiACIiACIiACIiACEjo6R0QAREQAREQAREQAREQAREQgSYjIKHXZA9UtyMCIiACIiACIiACIiACIiACEnp6B0RABERABERABERABERABESgyQhI6DXZA9XtiIAIiIAIiIAIiIAIiIAIiICEnt4BERABERABERABERABERABEWgyAhJ6TfZAdTsiIAIiIAIiIAIiIAIiIAIiIKGnd0AEREAERKAuAvfdd5/77W9/615//fUW+33/+9931157rXv33XdbbGttwzvvvON23HFHd/TRR7f2EO6jjz5yb775Zu7+J598stt8883dPffck7u9LRvfeustd+SRRzaUl13ve++958444wz3n//8x5pCeckll7hJkyaVtTViZdq0ae68885r1aGee+45d/rpp7vhw4e7Dz/8sFXH0E4iIAIiIALlBLqVr2pNBERABERgUQm8//77buutt17kD9ZTTz3Vbb/99ot6OQ3ff+zY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PP+DDz6Y8+GHH77pvXevzZ49e+q4cePunDhxIuPwTKwVibm0nf7WZvtaCY64buuUGNvKvHjpuok7azeBl67HAs/6pEIv7WPbrX9c2vHzStow+stEQAREQAREQAREQAREQAREoD0IBPEUncjW80ra0iUWbXn1uI190/X4PHZsuxzbxnpW72ZbayhtJ0SW1W03LgTxZsa6iTETcWyzOvtbPS2tX1ym9bx12mQiIAIiIAIiIAIiIAIiIAIi0EgCqfaJ160el9QrLbGIi+u2T14b92Pba7q3SkKPAyHCMKtTYnH7gpYFqtNEm4k+E3y0s2+eJ4/9bT87blpaH0qZCIiACIiACIiACIiACIiACHQUAdNEnN/qcUk9b522PBFXqZ1zYOkxF7T+33lsPStToccBTGTRKV5P69lBciqxwItFnB0jbrPzWRuHi9vs8NZm6ypFQAREQAREQAREQAREQAREoL0JoGnMrB6XaZ311i6cx45XqZ5uc6nQsw6xqOLAtm4nYd3arY19U7M+9M9b6B+323pcpnXWZSIgAiIgAiIgAiIgAiIgAiLQUQRiDWT1uKSet27tVnL9Vk9L22Yl283iOm3peq7Qs52LSjtIJbFHHxNwHCdej9utTmlm9bS07Xml9c3bpjYREAEREAEREAEREAEREAERqIeAaZ5K+1iftGQf2mxJ1+P+RX1sHyttH9ZrskoCKd1WtE67bYvLtF60zoWyLd5OG2ZtC9YW/JvXFm9XXQREQAREQAREQAREQAREQAQaTSBPbMVtVqe0Otdg69ZWtG59rYz702Zm7UXrob2aaEq3F61be1zGdU7Gei1t1pfSzPaz9bSstj3tr3UREAEREAEREAEREAEREAERKCKQiqm0X7o9Xrc6ZVznGPW0WX9KMzte0bq1Z8Ira8ippCKqaN3areRQ1G29Wmn9KTHrn9bDRv0jAiIgAiIgAiIgAiIgAiIgAh1EIBZc1eq2Pa+0Nm7D6mlpt2jtRevWHspYTJVtSFby+qVttp6WHCpts/W8bXEb9dji/eJ21UVABERABERABERABERABESgrQmkYsvOF7db3Ur6WD0tq22Lt1M3s+PYeouyHuGU1zdti9etbiUnz6vHbXaBaVu6bv1UioAIiIAIiIAIiIAIiIAIiEB7E0iFVrrO9ViblXFbXC/aHvehbhb3t7YWZb0CKq9/tbZ4e1znYuL1uJ5ua3HhahABERABERABERABERABERCBTkAgFV7xelznUuP1orrdUry9UpttKytTcVW2sWClaJ9a2uM+cT0+VVE7fSpti4+hugiIgAiIgAiIgAiIgAiIgAg0mkCe+LJzFG2L24vqdgzKuE8t7XGfrL4owqlo33ra8/rmtWUXrIoIiIAIiIAIiIAIiIAIiIAIdEICeQKt1jZuJ69vpfaKCBohqiodoy22VbwhbRQBERABERABERABERABERCBdiZQJNK4jLbYVvX2lqrao/YOlUQdR6m2vfYzqacIiIAIiIAIiIAIiIAIiIAIdB4ClcRcepXV+lbbnh4vd70txFc9x6ynb+4NqFEEREAEREAEREAEREAEREAEOimBekRbPX2r3m57CK1FPcei7l8VgjqIgAiIgAiIgAiIgAiIgAiIQJ0EFlWYLer+FS/3/wPPQFJZU8NS6wAAAABJRU5ErkJggg=="
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第一步：种子词集构建\n",
    "![image.png](attachment:image.png)"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 全量数据语料库\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(22280, 16)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "\n",
    "# 读取全量数据语料库\n",
    "df = pd.read_csv('./Input/食药环数据1.1-4.15汇总数据_labelme（0为普通事件，1为疑似违纪违法事件）.csv', encoding='utf-8')\n",
    "df.shape\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 语料预处理\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 113,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0    杨先生 来电 反映 槐荫区 个体 工商户 已 取得 营业执照 咨询 办理 食品 流通 许可证...\n",
       "1    王女士 来电 反映 登录 山东 政务 服务网 申请 济南市 历城区 王 舍人 食品 经营 许...\n",
       "2    姜先生 来电 反映 公司 槐荫区 主要 做 保健 外 用品 批准文号 为豫健 字号 不 属于...\n",
       "3    陈女士 来电 反映 单位名称 历城区 迷瞳 化妆品 店 历城区 王 舍人 街道 食品药品 监...\n",
       "4    刘女士 来电 反映 单位 属于 历城区 个体 工商户 营业 地址 变更 想 咨询 食品 经营...\n",
       "Name: 问题描述, dtype: object"
      ]
     },
     "execution_count": 113,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import jieba\n",
    "import codecs\n",
    "import re\n",
    "\n",
    "# 加载中文停用词表\n",
    "def get_stopwords(filepath):\n",
    "    stopwords = []\n",
    "    with codecs.open(filepath, 'r', encoding='utf8') as f:\n",
    "        stopwords.extend(line.strip() for line in f)\n",
    "    return stopwords\n",
    "\n",
    "# 分词并删除停用词\n",
    "def clean_and_seg(sentence):\n",
    "    # 清洗回车、制表符等字符\n",
    "    sentence = re.sub(r'\\r', '', sentence)  # 删除回车\n",
    "    sentence = re.sub(r'\\t', '', sentence)  # 删除制表符\n",
    "    sentence = re.sub(r'\\n', '', sentence)  # 删除换行符\n",
    "    sentence = re.sub(r'\\n+', '', sentence)  # 将多个连续的换行符替换为单个换行符\n",
    "    sentence = re.sub(r'[a-zA-Z0-9]', '', sentence) # 删除文本中的数字和英文字符\n",
    "    sentence = re.sub(r'[^\\u4e00-\\u9fa5a-zA-Z]', '', sentence) # 清洗文本中的中文和英文标点符号\n",
    "    sentence_seged = jieba.cut(sentence.strip())\n",
    "    outstr = ''\n",
    "    for word in sentence_seged:\n",
    "        if word not in stopwords and word != '\\t':\n",
    "            outstr += word\n",
    "            outstr += \" \"\n",
    "    return outstr\n",
    "\n",
    "# 加载停用词表\n",
    "stopwords = get_stopwords('./Input/stopwords.txt')\n",
    "\n",
    "# 分词并删除停用词\n",
    "df['问题描述'] = df['问题描述'].apply(clean_and_seg)\n",
    "\n",
    "# 输出结果\n",
    "df['问题描述'].head()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[['杨先生', '来电', '反映', '槐荫区', '个体', '工商户', '已', '取得', '营业执照', '咨询', '办理', '食品', '流通', '许可证', '希望', '相关', '单位', '落实', '处理', '请', '处理', '回复', '来电', '人', ''], ['王女士', '来电', '反映', '登录', '山东', '政务', '服务网', '申请', '济南市', '历城区', '王', '舍人', '食品', '经营', '许可证', '收不到', '验证码', '咨询', '处理', '希望', '相关', '单位', '落实', '处理', '请', '处理', '回复', '来电', '人', ''], ['姜先生', '来电', '反映', '公司', '槐荫区', '主要', '做', '保健', '外', '用品', '批准文号', '为豫健', '字号', '不', '属于', '医疗器械', '目前', '公司', '想', '开展', '网上', '销售', '咨询', '去', '备案', '希望', '相关', '单位', '落实', '处理', '请', '处理', '回复', '来电', '人', '']]\n"
     ]
    }
   ],
   "source": [
    "full_corpus = df['问题描述'] # 普通事件\n",
    "# 将语料库转化为 list of list 形式，每个子列表代表一篇文档，其中每个元素为一个单词\n",
    "full_corpus = [doc.split(' ') for doc in full_corpus]\n",
    "print(full_corpus[:3])\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 普通事件\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[['王先生', '来电', '反映', '现想', '钢城区', '建设', '沙场', '从事', '洗沙', '行业', '咨询', '文明', '建厂', '有无', '相关', '政策', '支持', '希望', '相关', '单位', '落实', '处理', '请', '处理', '回复', '来电', '人', ''], ['来电', '人', '反映', '长清区', '崮', '云湖', '街道', '办事处', '月份', '左右', '村民', '每天', '崮', '云湖', '电鱼', '认为', '不合理', '要求', '尽快', '查处', '电鱼', '现象', '希望', '相关', '单位', '落实', '处理', '请', '处理', ''], ['旺', '先生', '来电', '反映', '章丘', '区', '王家', '村庄', '杏林', '水库', '每天', '都', '有人', '水库', '电鱼', '造成', '水污染', '要求', '落实', '查处', '希望', '相关', '单位', '落实', '处理', '请', '处理', '回复', '来电', '人', '']]\n"
     ]
    }
   ],
   "source": [
    "# 选择特定标签的行\n",
    "ordinary_events_corpus = df[df['label']==0.0]['问题描述'] # 普通事件\n",
    "# 将语料库转化为 list of list 形式，每个子列表代表一篇文档，其中每个元素为一个单词\n",
    "ordinary_events_corpus = [doc.split(' ') for doc in ordinary_events_corpus]\n",
    "print(ordinary_events_corpus[:3])\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 疑似犯罪线索事件\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[['宋先生', '来电', '反映', '槐荫区', '腊', '山河', '整条', '河流', '河道', '东西', '两侧', '存在', '多处', '建筑', '垃圾', '杂草丛生', '河道', '内有', '大量', '淤泥', '河道', '内', '每天', '全天', '均', '外', '散发', '处', '刺鼻', '臭味', '咨询', '相关', '部门', '是否', '针对', '腊', '山河', '进行', '治理', '规划', '希望', '相关', '单位', '落实', '处理', '请', '处理', '回复', '来电', '人', ''], ['来电', '人', '反映', '先行', '区', '太平镇', '来佛', '村村', '东北', '徒骇河', '河南', '侧有刻', '沙子', '机器', '全天', '作业', '持续', '半年', '没有', '营业执照', '每天', '噪音', '扰民', '严重', '希望', '部门', '制止', '噪音', '扰民', '问题', '希望', '相关', '单位', '落实', '处理', '请', '处理', ''], ['刘先生', '来电', '反映', '槐荫区', '玉清湖', '街道', '办事处', '田庄', '村村', '西侧', '田庄', '卫生室', '门口', '向北', '此处', '一处', '工厂', '不', '清楚', '工厂', '造成', '道路', '上', '存在', '黑色', '粉末', '异味', '刺鼻', '要求', '查处', '取缔', '工厂', '希望', '相关', '单位', '落实', '处理', '请', '处理', '']]\n"
     ]
    }
   ],
   "source": [
    "suspected_criminal_clue_events_corpus = df[df['label']==1.0]['问题描述'] # 疑似犯罪线索事件\n",
    "# 将语料库转化为 list of list 形式，每个子列表代表一篇文档，其中每个元素为一个单词\n",
    "suspected_criminal_clue_events_corpus = [doc.split(' ') for doc in suspected_criminal_clue_events_corpus]\n",
    "print(suspected_criminal_clue_events_corpus[:3])\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 经验知识词集\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['不作为', '失职', '渎职', '违纪', '违法']"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 收集执法部门的正面和反面犯罪信息词汇作为经验知识词集\n",
    "with open('./Input/positive_experience_words.txt', 'r', encoding='utf-8') as f:\n",
    "    pos_knowledge_set = f.read()\n",
    "\n",
    "# 将知识词集转化为 list 形式，每个元素为一个单词\n",
    "pos_knowledge_set = list(pos_knowledge_set.split('\\n'))\n",
    "pos_knowledge_set[:5]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['未发现', '已解决', '符合标准', '未发现问题', '不予立案']"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 收集执法部门的正面和反面犯罪信息词汇作为经验知识词集\n",
    "with open('./Input/negative_experience_words.txt', 'r', encoding='utf-8') as f:\n",
    "    neg_knowledge_set = f.read()\n",
    "\n",
    "# 将知识词集转化为 list 形式，每个元素为一个单词\n",
    "neg_knowledge_set = list(neg_knowledge_set.split('\\n'))\n",
    "neg_knowledge_set[:5]"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 训练 Word2Vec 模型\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/tmp/ipykernel_3830925/595615389.py:6: DeprecationWarning: Call to deprecated `iter` (Attribute will be removed in 4.0.0, use self.epochs instead).\n",
      "  full_model.train(full_corpus, total_examples=full_model.corpus_count, epochs=full_model.iter)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(12699951, 17097885)"
      ]
     },
     "execution_count": 105,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from gensim.models import Word2Vec\n",
    "import multiprocessing\n",
    "\n",
    "# 训练全量数据 Word2Vec 模型\n",
    "full_model = Word2Vec(full_corpus, size=400, window=5, min_count=1, sg=1, iter=15, workers=multiprocessing.cpu_count())\n",
    "full_model.train(full_corpus, total_examples=full_model.corpus_count, epochs=full_model.iter)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/tmp/ipykernel_2219194/761998669.py:5: DeprecationWarning: Call to deprecated `iter` (Attribute will be removed in 4.0.0, use self.epochs instead).\n",
      "  labeled_ordinary_model.train(ordinary_events_corpus, total_examples=labeled_ordinary_model.corpus_count, epochs=labeled_ordinary_model.iter)\n",
      "/tmp/ipykernel_2219194/761998669.py:9: DeprecationWarning: Call to deprecated `iter` (Attribute will be removed in 4.0.0, use self.epochs instead).\n",
      "  labeled_suspected_model.train(suspected_criminal_clue_events_corpus, total_examples=labeled_suspected_model.corpus_count, epochs=labeled_suspected_model.iter)\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "(80829, 191205)"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 训练已知属性数据 Word2Vec 模型\n",
    "\n",
    "# 普通事件\n",
    "labeled_ordinary_model = Word2Vec(ordinary_events_corpus, size=400, window=5, min_count=5, sg=1, iter=15, , unknown_words=1, workers=multiprocessing.cpu_count())\n",
    "labeled_ordinary_model.train(ordinary_events_corpus, total_examples=labeled_ordinary_model.corpus_count, epochs=labeled_ordinary_model.iter)\n",
    "\n",
    "# 疑似犯罪线索事件\n",
    "labeled_suspected_model = Word2Vec(suspected_criminal_clue_events_corpus, size=400, window=5, min_count=5, sg=1, iter=15, , unknown_words=1, workers=multiprocessing.cpu_count())\n",
    "labeled_suspected_model.train(suspected_criminal_clue_events_corpus, total_examples=labeled_suspected_model.corpus_count, epochs=labeled_suspected_model.iter)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "pos_knowledge_vectors = [\n",
    "    full_model.wv[word]\n",
    "    for word in pos_knowledge_set\n",
    "    if word in full_model.wv.vocab\n",
    "]\n",
    "pos_knowledge_matrix = np.vstack(pos_knowledge_vectors)\n",
    "pos_knowledge_mean = np.mean(pos_knowledge_matrix, axis=0)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "neg_knowledge_vectors = [\n",
    "    full_model.wv[word]\n",
    "    for word in neg_knowledge_set\n",
    "    if word in full_model.wv.vocab\n",
    "]\n",
    "neg_knowledge_matrix = np.vstack(neg_knowledge_vectors)\n",
    "neg_knowledge_mean = np.mean(neg_knowledge_matrix, axis=0)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 保存模型和知识词向量\n",
    "full_model.save('./Output/Models/full_word2vec.model')\n",
    "labeled_ordinary_model.save('./Output/Models/labeled_ordinary_word2vec.model')\n",
    "labeled_suspected_model.save('./Output/Models/labeled_suspected_word2vec.model')\n",
    "np.save('./Output/Models/neg_knowledge_vectors.npy', neg_knowledge_mean)\n",
    "np.save('./Output/Models/pos_knowledge_vectors.npy', pos_knowledge_mean)\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 计算相似度、求种子词集\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 加载已知属性数据语料 Word2Vec 模型\n",
    "from gensim.models import Word2Vec\n",
    "import numpy as np\n",
    "\n",
    "labeled_ordinary_model = Word2Vec.load('./Output/Models/labeled_ordinary_word2vec.model')\n",
    "labeled_suspected_model = Word2Vec.load('./Output/Models/labeled_suspected_word2vec.model')\n",
    "# 加载经验知识词汇集基于全量语料上下文语义的词向量\n",
    "neg_knowledge_vec = np.load('./Output/Models/neg_knowledge_vectors.npy')\n",
    "pos_knowledge_vec = np.load('./Output/Models/pos_knowledge_vectors.npy')\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 普通事件\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'日常', '监督', '治污', '各项', '加大', '达标排放', '力度', '地点', '严格'}\n"
     ]
    }
   ],
   "source": [
    "from sklearn.metrics.pairwise import cosine_similarity\n",
    "# 设定相似度阈值\n",
    "import contextlib\n",
    "similarity_threshold = 0.45\n",
    "\n",
    "# 初始化种子词集\n",
    "seed_words_F = set()\n",
    "\n",
    "# 对于每个已知属性数据中的词汇，计算其与经验知识词向量的余弦相似度，如果相似度大于阈值则将其添加到种子词集中\n",
    "for doc in ordinary_events_corpus:\n",
    "    for word in doc:\n",
    "        with contextlib.suppress(KeyError):\n",
    "            vec = labeled_ordinary_model.wv[word]\n",
    "            # similarity = np.dot(vec, pos_knowledge_vec) / (np.linalg.norm(vec) * np.linalg.norm(pos_knowledge_vec))\n",
    "            similarity = cosine_similarity([vec], [pos_knowledge_vec])[0][0]\n",
    "            if similarity > similarity_threshold:\n",
    "                seed_words_F.add(word)\n",
    "\n",
    "print(seed_words_F)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 将种子词集保存到文件中\n",
    "with open('./Output/Results/seed_words_F.txt', 'w', encoding='utf-8') as f:\n",
    "    f.write('\\n'.join(seed_words_F))"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 疑似犯罪线索事件\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'来电', '扰民', '陡沟', '投诉', '不合理', '部门', '拒绝', '石灰窑', '环境污染', '拆除', '环保部门', '查处', '中', '认为', '提供', '尽快', '还'}\n"
     ]
    }
   ],
   "source": [
    "# 设定相似度阈值\n",
    "import contextlib\n",
    "similarity_threshold = 0.42\n",
    "\n",
    "# 初始化种子词集\n",
    "seed_words_T = set()\n",
    "\n",
    "# 对于每个已知属性数据中的词汇，计算其与经验知识词向量的余弦相似度，如果相似度大于阈值则将其添加到种子词集中\n",
    "for doc in suspected_criminal_clue_events_corpus:\n",
    "    for word in doc:\n",
    "        with contextlib.suppress(KeyError):\n",
    "            vec = labeled_suspected_model.wv[word]\n",
    "            # similarity = np.dot(vec, pos_knowledge_vec) / (np.linalg.norm(vec) * np.linalg.norm(pos_knowledge_vec))\n",
    "            similarity = cosine_similarity([vec], [pos_knowledge_vec])[0][0]\n",
    "            if similarity > similarity_threshold:\n",
    "                seed_words_T.add(word)\n",
    "\n",
    "print(seed_words_T)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 将种子词集保存到文件中\n",
    "with open('./Output/Results/seed_words_T.txt', 'w', encoding='utf-8') as f:\n",
    "    f.write('\\n'.join(seed_words_T))"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 种子词回溯值\n",
    "\n",
    "$$\n",
    "P_{(\\text {word })}=\\frac{n_{(\\text {word })}}{N_{(\\text {word })}}\n",
    "$$\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [],
   "source": [
    "from collections import Counter\n",
    "\n",
    "def compute_backtracking_ratio(sub_word, criminal_corpus, full_corpus):\n",
    "    # print(f\"种子词：{sub_word}\")\n",
    "    counter = Counter([word for sentence in criminal_corpus for word in sentence])\n",
    "    backtracking = counter[sub_word]\n",
    "    # print(f\"回溯数：{backtracking}\")\n",
    "    counter = Counter([word for sentence in full_corpus for word in sentence])\n",
    "    frequency = counter[sub_word]\n",
    "    # print(f\"词频：{frequency}\")\n",
    "    return backtracking / frequency"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "backtracking_ratios = []\n",
    "words_F = []\n",
    "with open('./Output/Results/seed_words_F.txt', 'r', encoding='utf-8') as f:\n",
    "    lines = f.readlines()\n",
    "    for word_F in lines:\n",
    "        word_F = word_F.replace('\\n', '')\n",
    "        backtracking_ratio = compute_backtracking_ratio(word_F, suspected_criminal_clue_events_corpus, full_corpus)\n",
    "        backtracking_ratios.append(backtracking_ratio)\n",
    "        words_F.append(word_F)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>F-种子词</th>\n",
       "      <th>回溯值</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>日常</td>\n",
       "      <td>0.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>监督</td>\n",
       "      <td>0.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>治污</td>\n",
       "      <td>0.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>各项</td>\n",
       "      <td>0.000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>加大</td>\n",
       "      <td>0.025</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  F-种子词    回溯值\n",
       "0    日常  0.000\n",
       "1    监督  0.000\n",
       "2    治污  0.000\n",
       "3    各项  0.000\n",
       "4    加大  0.025"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_words_F = pd.DataFrame({\n",
    "    'F-种子词':words_F,\n",
    "    '回溯值': backtracking_ratios\n",
    "})\n",
    "df_words_F.to_csv('./Output/Results/Words_F.csv')\n",
    "df_words_F.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "backtracking_ratios = []\n",
    "words_T = []\n",
    "with open('./Output/Results/seed_words_T.txt', 'r', encoding='utf-8') as f:\n",
    "    lines = f.readlines()\n",
    "    for word_T in lines:\n",
    "        word_T = word_T.replace('\\n', '')\n",
    "        backtracking_ratio = compute_backtracking_ratio(word_T, suspected_criminal_clue_events_corpus, full_corpus)\n",
    "        backtracking_ratios.append(backtracking_ratio)\n",
    "        words_T.append(word_T)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>T-种子词</th>\n",
       "      <th>回溯值</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>来电</td>\n",
       "      <td>0.008926</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>扰民</td>\n",
       "      <td>0.035448</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>陡沟</td>\n",
       "      <td>0.050000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>投诉</td>\n",
       "      <td>0.004337</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>不合理</td>\n",
       "      <td>0.005241</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  T-种子词       回溯值\n",
       "0    来电  0.008926\n",
       "1    扰民  0.035448\n",
       "2    陡沟  0.050000\n",
       "3    投诉  0.004337\n",
       "4   不合理  0.005241"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_words_T = pd.DataFrame({\n",
    "    'T-种子词':words_T,\n",
    "    '回溯值': backtracking_ratios\n",
    "})\n",
    "df_words_T.to_csv('./Output/Results/Words_T.csv')\n",
    "df_words_T.head()"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第二步：扩展词集\n"
   ]
  },
  {
   "attachments": {
    "image.png": {
     "image/png": "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/XaShbldLOlz8uL9e9DodO/e3cXuxD/77LPE9A5t06RJk4J26Y033oirzoyPGTMmSafPaK/AaODAgUm6IkJACAgBISAEWoBAzFNi0hPH86ovRobyCk4+sQYI00dWeaUJASEgBDokAgsuuGAwIUMr88QTT+RhgDZo++23d3vttVcwQ0Ozsu+++xbUEs0777x516dP4r130nnxuWmEzKmCnVuZLFKFid8111wTimBWN/PMMwdtk12DAwTIEiaApYR2re277rrLffzxx27VVVcNJneFrqV+iRAQAkJACAiBDATSXIRzxMLfz0r8rZQMVdxAifaVLQSEgBBoNwhAJmabbTbHGh40PmhCipmGQTSQHj16uP333z9s4Dps2LA8szTyn3nmGYKi8tJLLwVtE4UOPvhgd9555yXljYCgxUEwbXv//fcd3upiSZvsffHFFw5NEMKaH8z68FD3+eefB7O/3Xff3V1++eVlESHqwDOeedNjrRH33b9/f7Iyhf2EHnroocw8JQoBISAEhIAQyECgIiLE9aXIUFxhsXicl9EvJQkBISAEOgYCECFMy5ZbbjnXp0+fsm6adTmnn356IFGLLbZYYoZW1sUZhWaaaaaglcL5AGuF0gLBKWctznzzzeeMsFEH3vBMMItDu8N6pgceeMCSi4aY5WG2Bwmbeuqp3aWXXupYdwRJQ0sEgUwTsqIVKlMICAEhIAQ6MgLwj5iDFIun1w0luEGG4gstI52WPqccaVnpVodCISAEhECHQgCTLtPCZN34a6+95tZbb728NThW7rbbbrNoYoa20korOTQ+sQkaRIY25phjjqQ8EczX0CCZWdk999zjdtllF3f11VeHcvfee28T73VZxMPSJk6c6L777rtw7f333x9Ij3mlC4n+D8QPUz/I3/jx4y25ZNinTx/36KOPutVXXz2U5dqBft0QRMm7Sy15vQoIASEgBISAEIgQKMRJ0jyF8zQpmqKUZoh20hVFbSsqBISAEBACtUSgW7duwQmDtYFrbtbu4JjBhPO0a23Ls3CDDTYoStSsXDr85JNPEhK1yiqruOOOO87ts88+STH6w5EWyBSCBzvM60wwlUMLtNFGG1lSCEnH/XgsmBy+++67cZLiQkAICAEhIAQqQSCLAOVdXw4Zii8QMYrRUFwICIGGRYD1PaZFqcVNGBmI6zaHBVl5Xbp0yTQR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upjWvvVjjz3WQWguu+yyok0/99xzbtKkSe7XX38NROT66693jz/+eMFrpp566kBodtttN7fFFlvkudYueFGVM8aPH+922GGHoMEaNaq40UEhIlXlLqk6ISAEhIAQqDMEqqUZMsLD7RG3Q2ZydfbA1R0hIATqA4GYDKV71LlzZ7fpppu6lVde2R144IHp7FY5x2yOtT/nn3++u+uuu9y3335bsF36u8QSS4SNVFdbbTU31VRTFSxbDxlsAnv33Xe7O+64I+mOyFAChSJCQAgIgQ6FgMhQh3rculkhIATqBYEPPvjAHXLIIe6+++5zEydOLNgtnAPgPW2NNdYI5GiXXXYpWLalGazxOfzww93zzz8f1hGVWu+DWdu2227rMD1jHVGjyXvvvedeffXVoLlC6yURAkJACAiBjoeAyFDHe+a6YyEgBOoQAYgIHtnWWWedQESa00VM01hnM+WUUzrW4nAgaHnQfGDiRjvN0YKwrmfMmDGue/fubWLO1xw8dI0QEAJCQAgIgVIIiAyVQkj5QkAICIE2QOCTTz4JJmoXXHBBIDEQmdYSSFSXLl2CRgpva/PNN19rNa12hIAQEAJCQAi0KgIiQ60KtxoTAkJACFQHAbQ9DzzwgBs7dqx79tlnHeQJV93s88O+PWiA2LAULRGmdmiNCNHwEB84cKDr379/MBEzDVJ1eqZahIAQEAJCQAg0DgIiQ43zrNRTISAEhIAQEAJCQAgIASEgBKqIQLXIEF7jJEJACAgBISAEhIAQEAJCQAgIgQ6HgMhQh3vkumEhIASEgBAQAkJACAgBISAEQEBkSO+BEBACQkAICAEhIASEgBAQAh0SAZGhDvnYddNCQAgIASEgBISAEBACQkAIiAzpHRACQkAICAEhIASEgBAQAkKgQyIgMtQhH7tuWggIASEgBISAEBACQkAICAGRIb0DQkAICAEhIASEgBAQAkJACHRIBESGOuRj100LASEgBISAEBACQkAICAEhIDKkd0AICAEhIASEgBAQAkJACAiBDomAyFCHfOy6aSEgBISAEBACQkAICAEhIAREhvQOCAEhIASEgBAQAkJACAgBIdAhERAZ6pCPXTctBISAEBACQkAICAEhIASEgMiQ3gEhIASEgBAQAkJACAgBISAEOiQCIkMd8rHrpoWAEBACQkAICAEhIASEgBAQGdI7IASEgBAQAkJACAgBISAEhECHREBkqEM+dt20EBACQkAICAEhIASEgBAQAiJDegeEgBAQAkJACAgBISAEhIAQ6JAIiAx1yMeumxYCQkAICAEhIASEgBAQAkJAZEjvgBAQAkJACAgBISAEhIAQEAIdEgGRoQ752HXTQkAICAEhIASEgBAQAkJACIgM6R0QAkJACAgBISAEhIAQEAJCoEMiIDLUIR+7bloICAEhIASEgBAQAkJACAgBkSG9A0JACAgBISAEhIAQEAJCQAh0SAREhjrkY9dNCwEh0IgIPPXUU+66665zn376aZPuH3jgge7GG290P/30U5O85iZ88803bsMNN3SHHnpoc6uo+XUvv/yye/DBB923336b19Ydd9zhcrlcXlp88uWXX7pDDjmkqnhZ/RMnTnSnnHJKkz7985//dHfddZcVq1r45JNPurPOOqtZ9b355pvu5JNPdltssYX79ddfm1WHLhICQkAINDICU/jOGyEibgdplkeco1NGSFpn8vxHZ5QPJUJACAiBNkPgf//7n1tjjTVaPKg78cQT3Xrrrddm91Go4UGDBrn//Oc/4eA+TUaPHu369u0bTp944gm3yiqrWFaLwu+++85NP/30bqmllnIvvvhiybouvfRS99///rdkuWIFZphhBvf3v/+9SZHffvvN7bzzzm7cuHEOotOlS5dQZsstt3S33Xabu/XWW8OAnsTzzz/fHXzwwW7VVVd19913n5tuuuma1AfJu/feewPRO+ecc0I+pOLhhx9200wzjevUqZObcko+fYWFZwA2abnwwgvd/vvv72aZZRb37rvvBgwhbOuuu66baqqpQp94luXIQw89FMjeaaedFvqVvgbiNfvsswfi9dhjj7nVVlstXSTv/JFHHnGPP/64e/311x1EcsyYMUn+CSec4A477DC31lpruUmTJiXpWRHI97bbbhuy2vv/Xdb9K00ICIG2R2CKKabo53vBjxUzOYQcv2WEpHEwQ2YhcY5AZAglQkAICIGGRwBNAIPxqaee2s0777x59/Pzzz+7zp07Fx3gfvHFF278+PHus88+y7u2OScM2tFWzDHHHK5r167NqaLJNVaPhVbglltuCdE111yzLCLEwPyiiy4Kg2sG5/6D4mabbTb3t7/9zW266aYOUgBWHMiIESNcnz59Qtz+PPDAA26BBRaw0xA+/fTT7pprrslLq/RkpplmyiRDPBOIzVdffeXWX399d88997hpp502ITrdunULTaE9O+KII0KcdyCNlfXn9NNPdxANiBcka+GFF3b333+/I71cOffcc5uQoe+//z7R0hxzzDGBCFHfOuusEwjaeeedF9oohwxBSHbccUf3+eefh/sdOnSoW3LJJQMhhLBBCHl+J510kjvooIPcHnvsEZ4V7z//C7/88ovjvYfUQWqRG264wV155ZUhbn/QCvHuLLTQQmEigedIHRDTtHB/aB8//vjjJKue/u+STikiBISAECgTgd+/dGUWVjEhIASEQD0jwMAQYaYc859YdtllF8cA/vDDDw+D0jjP4mgT0CpYPZZeSQjRYHDKgBJhwP7nP//ZXXLJJYk2o5L64rIMUBELLe///u//QtRIgKUXCiF9aAggO5hGMbjdbbfdQvF55pnHMeClDXBg0AtBWXrppUP+8OHDHddnmVSZtoZBuWkNCvUhnc6AH5yytDiUnXPOOYPWBs3Ho48+GsgFWjAjbPSVOhjYQwCo66qrrko3k5wvtthibocddgjE4Pjjjw/apT333DOYBXIfkI1CmqF//etf4T2hTFr22msv99FHH4VkyBXvg4lpW6jXNI8QCbCkz0sssYT7xz/+YcWDdgoCNHjwYDdq1Cg3YMAAx3tM+1lCmSz8IFAvvfRSuIR7XXvttd3iiy/uqPvUU091f/nLX4LWigJompBlllnGQSzTst1227nrr78+7x20/5e2/L9L91PnQkAICIFyEaiEDAVVkq/YwnLbUDkhIASEQKsggGkTWo60MBBkrQ2D0VdeeSWYR8VlGITONddcSZINsJOEMiOYajEIx6QLjQSaE0yRrr766kA4WNNTqbz//vvunXfeCYNzWyv02muvOdbzzD///O6TTz5xL7zwQqh28803L1o9BLFnz56BBEAEEMjD7bffHjQLaF+OPvro0JYRLrsPBs4Ig3G0Cz/++GNYu4TmywT8ETQypcy17BoLP/jggxA1DY+lc89o2SAoM844YyACEC3I0dixY93XX38dikKEePZo48CFNTtgB8lggL/IIos0ITeUmTBhgmMtDzL33HOHI5wU+fOnP/0p5Nr9WlGer+HUr1+/hBSRjykZJnPgac/RrrPQiIidE6KxefXVV91WW20V7oNnzH117949aHsw6/vwww/dJptsEjCJr4Vk0S5Y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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 同义词集\n",
    "\n",
    "![image.png](attachment:image.png)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pandas as pd\n",
    "\n",
    "df_words_F = pd.read_csv('./Output/Results/Words_F.csv')\n",
    "df_words_T = pd.read_csv('./Output/Results/Words_T.csv')\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Word_F\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['服务项目', '巡查', '监察', '应付', '随机', '卷材', '生产线', '密闭', '环境监测', '严厉查处', '偷排', '偷放', '责成', '密切', '严厉打击', '确保', '牵走', '分户式', '入围', '属地', '污', '暂扣', '人居', '除臭剂', '有机肥', '动态', '沙坑', '散乱', '实时', '夜查', '石油化工', '减压', '催化裂化', '加氢', '挥发性', '密封', '有机物', '厂界', '甲烷', '总烃', '二甲苯', '监测数据', '催化重整', '二氧化硫', '氮氧化物', '排及', '沉淀池', '入驻', '泵', '亦', '局对', '减排', '出焦', '内个', '活性炭', '不外', '逐一', '群众反映', '强化', '跟进', '优化', '记载', '名录', '办好', '我区', '起爆', '祭扫', '并处', '收益', '行政许可', '产品检验', '太低', '疫病', '第五十七条', '十分重视', '第十一条', '派发', '企业名单', '其到', '一经', '法定程序', '新形势下']\n"
     ]
    }
   ],
   "source": [
    "from gensim.models import Word2Vec\n",
    "\n",
    "# 加载全量语料模型\n",
    "full_model = Word2Vec.load('./Output/Models/full_word2vec.model')\n",
    "\n",
    "# 加载种子词集并计算词向量\n",
    "seed_words = df_words_F['F-种子词'].to_list()\n",
    "seed_vectors = [full_model.wv[word] for word in seed_words]\n",
    "# 遍历全量词汇，并计算相似度\n",
    "similar_words = []\n",
    "for word in full_model.wv.vocab:\n",
    "    # 跳过种子词集\n",
    "    if word in seed_words:\n",
    "        continue\n",
    "    # 计算词向量和种子词集词向量的余弦相似度\n",
    "    similarity = full_model.wv.cosine_similarities(full_model.wv[word], seed_vectors).mean()\n",
    "    # print(similarity)\n",
    "    # 如果相似度大于阈值，则将词汇添加到同类词集中\n",
    "    if similarity >= 0.3:\n",
    "        similar_words.append(word)\n",
    "print(similar_words)\n",
    "\n",
    "# 将同类词集保存到文件中\n",
    "with open('./Output/Results/seed_similar_words_F.txt', 'w', encoding='utf-8') as f:\n",
    "    f.write('\\n'.join(similar_words))"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Word_T\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['希望', '相关', '单位', '落实', '处理', '整顿', '鸭棚', '制止', '塑料颗粒', '气割', '养殖厂', '农家乐', '复合板', '大理石', '加工过程', '烟气', '收购站', '解决不了', '断断续续', '渗漏', '搅拌', '残渣', '倾倒垃圾', '橡胶', '有亩', '灭火', '时扬尘', '烟味', '卷材', '捞鱼', '偷放', '沥青厂', '田福村', '盗用', '浓重', '塑机', '厂名', '移走', '隔音', '回应', '佛寺', '信鸽', '铝合金', '塑料厂', '断电', '水泥制品', '停业整顿', '配件厂', '黑村', '煤烟', '锁', '洗煤厂', '鲶鱼', '遗落', '电钻', '尘土飞扬', '周围环境', '马庄村', '煤厂', '煤灰', '飞扬', '原状', '木柴', '机厂', '四家', '市貌', '日常生活', '人员伤亡', '焦集村', '油污', '啃食', '麦苗', '蒸发', '结晶', '内乱', '电气焊', '实地考察', '牵走', '柴火', '水资源', '入围', '采取相应', '约亩', '偷着', '飞', '玻璃纤维', '性气体', '大院里', '丢弃', '蚊虫', '乱飞', '叫声', '砖块', '养猪厂', '鸡毛', '打鱼', '鱼类', '降尘', '死鸡', '刻', '镇鹿', '毛埠村', '洒水', '乱排', '切割机', '污染空气', '黄土', '选矿厂', '绿网', '暂扣', '石材', '人居', '高炉', '有毒气体', '排至', '警灯', '易燃易爆', '石屋', '曹范村', '强烈不满', '甲醛', '洒落', '减产', '塑料板', '依法查处', '井水', '粉煤灰', '蓄水池', '保护区', '音量', '物料', '有机肥', '发动机', '沙坑', '叉车', '火纸', '吸尘', '崖', '批文', '谷堆', '近十年', '污物', '粪池', '水有', '大且', '党政办', '通话记录', '来源不明', '开垦', '洗沙点', '刻沙', '铲除', '白塔村', '杂草', '卫生标准', '散乱', '山沟', '塌', '炊具', '南宫', '石机', '暂停营业', '大冶', '喷塑', '鸡鸭', '渎职', '保护地', '拉运', '白烟', '责任人', '追责', '火光', '董汉营', '问责', '伴随', '有权', '绿植', '发电站', '猪场', '退养', '木炭', '排及', '从严', '摊', '入驻', '泥沙', '点到点', '唯独', '车辆通行', '往村', '批评', '机油', '杜张', '村落', '严加', '撤掉', '地下管道', '办用', '掩埋', '主机', '恢复原状', '水坝', '水泵房', '屡禁不止', '局对', '出焦', '内个', '风压', '赵相波', '豆腐坊', '加以', '耿公清', '龙子', '生火', '内建盖', '风车', '雅思', '撤离', '沙厂', '合法经营', '形势严峻', '但村', '捡拾', '迁入', '鸡舍', '兔子', '名山', '村名', '换货', '自燃', '电压', '出人命', '全天候', '求', '东夏村', '预警', '干桥', '黏土', '潘立荣', '胶', '年村', '筛沙', '四点', '徇私舞弊', '很难', '掺杂', '鹁鸽', '获利', '偷运', '桂平', '天井', '落石', '庄镇山', '圣圈', '闫振福', '毁林', '运', '偷卖', '山沙', '吴小庄村', '吴丙义', '懒政', '挖断', '大有', '用土', '赵洪玉', '闫满村', '闫家峪村', '私挖', '水峪村', '偷取', '废除', '运出', '东沈', '销赃', '督办', '中义', '追究责任', '不像', '弓角湾村', '沙卖沙', '惩罚', '补偿金', '孙王', '铺垫', '湿滑', '收成', '卖土', '车脚', '全部排', '采光', '工程队', '整地', '一宅', '砸坏', '李旭胜', '农地', '动工', '归还给', '耕', '退林', '并处', '建窑', '建坟', '执法权', '强占', '白杨树', '踩踏', '还原', '李条', '撤职', '挖除', '高杆', '假酒', '棉花', '假冒', '端正', '下体', '担负', '产品检验', '正当理由', '送水', '腥味', '葱丝', '未经检验', '第五十七条', '九十日', '已下', '十分重视', '保养', '物种', '下以', '调货', '餐盒', '不予承认', '夹子', '故该', '童鞋', '较贵', '其到', '常备', '现不', '囤货', '售罄', '必带', '备货', '鳄鱼', '区食', '元军', '王华忠', '第十四条', '行洪', '四乱', '简化', '古宅', '于立斌', '立斌', '牟利', '营', '拉起', '当响', '怨声载道', '暂且不说', '换来', '一经', '徐西', '武以', '暗地里', '挖石', '尘土飞杨', '自然环境', '对麗园', '城市污染', '占地费', '谭家', '盗卖', '大侯', '盖房子', '这笔', '黄庆武', '渔网', '野兔', '付清', '新形势下', '依赖', '受术者', '第三十五条', '精神损失', '争执', '元及', '最高人民法院', '输氧', '满员', '第六十四', '一上午', '形式主义', '熟练', '改善服务', '遗传病', '打印发票', '如期', '上呼吸道', '刁难', '落实政策', '子有', '对外开放', '违约金', '增派', '早退', '参加考试', '公积金', '认知', '四联', '飞往']\n"
     ]
    }
   ],
   "source": [
    "from gensim.models import Word2Vec\n",
    "\n",
    "# 加载全量语料模型\n",
    "full_model = Word2Vec.load('./Output/Models/full_word2vec.model')\n",
    "\n",
    "# 加载种子词集并计算词向量\n",
    "seed_words = df_words_T['T-种子词'].to_list()\n",
    "seed_vectors = [full_model.wv[word] for word in seed_words]\n",
    "# 遍历全量词汇，并计算相似度\n",
    "\n",
    "similar_words = []\n",
    "for word in full_model.wv.vocab:\n",
    "    # 跳过种子词集\n",
    "    if word in seed_words:\n",
    "        continue\n",
    "    # 计算词向量和种子词集词向量的余弦相似度\n",
    "    similarity = full_model.wv.cosine_similarities(full_model.wv[word], seed_vectors).mean()\n",
    "    # print(similarity)\n",
    "    # 如果相似度大于阈值，则将词汇添加到同类词集中\n",
    "    if similarity > 0.2:\n",
    "        similar_words.append(word)\n",
    "\n",
    "print(similar_words)\n",
    "# 将同类词集保存到文件中\n",
    "with open('./Output/Results/seed_similar_words_T.txt', 'w', encoding='utf-8') as f:\n",
    "    f.write('\\n'.join(similar_words))"
   ]
  },
  {
   "attachments": {
    "image.png": {
     "image/png": "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LB5xxBEZy4NUOfYZSJtZdzIViCPmrjjwKRMnnHjQffzxx7N///vf2RJLLFFWVGlCQAgIASEgBDoWARHLjr11argQEAJCYGQR8LlOv//974NH1GuuuablBmF6Ou200zZ1XDw3tuwA1q3cbLPNQta4ceP6FJltttmyP//5z33SSXj11VezMtKYFqZcKjPMMENwTvT000+nWTX7aHuZj/r222/XpLODE7AxY8b0SScBpz177713aZ4ShYAQEAJCQAi0CwIilu1yJ9QOISAEhEAHIRCbmK6xxhoZZqeYrDYyVS27xKmnnrosuUjjXJjbsj6la/+KzCgy2WSTRXvl0WWXXTaLy9Hue++9t7xwSeoTTzzRJxUnP5i2luV54WY8kX7+858v1urz4/B+KxECQkAICAEh0AkI9CSxpJOCZ0M6F4289XXCTeR60s4W14eXwv508jrhmtVGISAERhaB73znO2HpD9aoZBmOVVZZJZt99tnDPEhatuuuu4YG8n564YUXwjv3H//4R59GswxHmQYvLojXVcxacXwD+RqIXHrppcEhj9eBE6JmNJVe3pc78X0PcWhUlUcZnA81kkMOOST7xje+UVNsxRVXrNnXztAjUPZNHYqzMqjRzn2Q9957L8xR/uQnPzlolw+2jm/abxm0k6iiPgg47vX6hAwMck8a3RcG0qgnLcfxSL1z9GnYECT48xVXjQULFiNpm+Myig8OAhMPTjXtVwsPPuSqzOyJkWVc3//kJz+p23AeTtYn68/mfzA/ASZa1EOdLnREWtn8uDikPv7E0003XZHMxwpHF5hcSYSAEBACg40A750zzjgjO/3000PVfKzxbMr7jHcd8otf/CJsl19+ecYcRLR5nkbYacIal3ibhSDG20svvRS0jKzVGaen8U673l5tL2uWsmYo39Fmhf8DGnWe85/97GfZAw880PBQ1kVlcDvtK9Q7kH7NgQcemL3//vtFMdJa6UfEXo+LSioieDvecccdK3Krk0855ZRsoYUWKi1w9NFHZ2jvuQYGmn74wx+WllPi4CLAQF+8ZEtZ7eT/9Kc/LcuqSfvKV74S+p3pdAOOd2dk9L/PO++8muPindNOOy1j4CKWwXiOvU/M/8uFtmDtsthii3mSwiFEoGs0lg8//HAwRbr11lvDy51RdB5SvBe28iKNsaYTsckmm8RJTcf5Q8WmT3hP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Xvh0NiEgBISAEBhpBJiPlspjjz0WljJI030f01cXc7zi0abD119/vasHKJsGQgWFgBAQAkJACExAQMRSj4IQEAJCQAh0NALxHDS/EPP059GGIfPYMG1P563jGII5PLFgVmVetuMkxYWAEBACQkAICAFDQMRSj4EQEAJCQAj0PAIsNJ86rcCECkdnsUAqbcmGOElxISAEhIAQEAJCwBAQsdRjIASEgBAQAj2PwHnnnZfZemd9cLAF3mvScEuPEyGJEBACQkAICAEhUIuAiGUtHtoTAk0hEHsTZhkanIRIOgcBXO+7xN49PU1h7yGw00479dFYnnjiidkJJ5xQAwYaywsvvLAmTTudhYCvLdlZre7t1saDOb6ud28joqsXAu2JgIhle94XtarNEYjJyF/+8hcRyza/X2nzWLPKRZ4bHYnODXfdddc+jRd56AOJEiYgoGej8x6FePF6EcvOu39qce8gIGLZO/daVzqICEw22WRFbWg0rrjiimJfkfZHALNHl3iQwNMUdhYC5557bmmDW7EkWGGFFUrr0MBDKSwdnXj//fd3dPt7sfGYoLustdZaHlUoBIRAmyEgYtlmN2QgzfnHP/6RuQt8PBlOMcUUA6lOx9ZBIF4H9eabb84YTRVBqQNYm2XdcMMNRYswgZR0NgIDXUz8Rz/6UbbOOutks8wySw0QkMq0bjq4P/vZz/p4kK05cMIO74W33347eJGdcsopM7Zpp522rKjShhEBefUdRrAH4VT8j5Zbbrmips0226yIKyIEqhDgf451Ah7CZ5ppphBWlVX64CEgYjl4WA5JTXRqeKm+//772X//+9/s2Wefzc4///zsjTfeyF566aXQaXnttdeyt956q/T8s846a4Yrfkbu55577mzBBRfMtt9++2zUqFEZWjfc68fzBUsrUWIpAt7pZKmCI488MjviiCNKyymxvRDgP+XrHnIP99prr/ZqoFrTNAKf+tSnsq985StNl08L4gn217/+dUh+9NFH0+ywv+eee5am77333iH9qKOOym655ZbswQcfzFg781//+lfGvOtx48ZlDPalwoAfBJPBv2mmmSabc845sw033DBbeumls+mmmy68j1mEXJrSFLmB7zP4x/cU4T0gjAeO6XDU8Kc//Sl7/PHHh+NUOkebIxD3iekX//GPf8wuvvjiQCBfeeWV8P6lT8x7uEzo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WBidlwgBISAEuh0BRtSZ24cGGO957l2zHa6bzinzkpZffvngrbUVr4Pt0H61QQgIASFQhQCWc7zTWGOXAbb+DPRV1T3QdPrEaEnpF9u0r47T1g30+rvh+J4gln6j3J06zmEwyxo7dqxnDXvICPuuu+6amcfUsDGq1s1mrsMOsE4oBIRARyCA4wLexZhtnXjiiWF0e6TMCNGE4u7d5kuGzg1rzEqEgBAQAt2IAFYcDOqh1GAN3JEc3GNq2p577hnev6wnyXqORlC6Efauv6aeIpZVdxMNJvMyGblh/iPzJFhHkHUZUeG3KvwZmHcz11xzBc9UjLywXg4eW+XVs1U0VV4ICIFeRIBODp0e3s1ML7j55puDF1MGBTGxalXcRI5pDph0mXOIbJpppgnvZubaS4SAEBACQiALc83xW8J715z7hKkDDP7ZEnhhilmrGNEnRoky99xzhz4xihT6xGwQSkl3ISBi2eB+8seCcL700kuhg8PoupNQOiVMCIcwegcF237m4Uj72ABYZQsBISAE+okAg4GQTt7NL7/8cngnk4aJFx0VfycT+ju61+da9RNqHSYEhIAQKBBA4fLaa6+FDcc748aNC3GWYLK11ENf2N+/9Ichjzi+k/QOAiKWvXOvdaVCQAgIASEgBISAEBACQkAICIEhQWCwiGX3roExJLCrUiEgBISAEBACQkAICAEhIASEgBBIERCxTBHRvhAQAkJACAgBISAEhIAQEAJCQAi0hICIZUtwqbAQEAJCQAgIASEgBISAEBACQkAIpAiIWKaIaF8ICAEhIASEgBAQAkJACAgBISAEWkJAxLIluFRYCAgBISAEhIAQEAJCQAgIASEgBFIERCxTRLQvBISAEBACQkAICAEhIASEgBAQAi0hIGLZElwqLASEgBAQAkJACAgBISAEhIAQEAIpAiKWKSLaFwJCQAgIASEgBISAEBACQkAICIGWEBCxbAkuFRYCQkAICAEhIASEgBAQAkJACAiBFAERyxQR7QsBISAEhIAQEAJCQAgIASEgBIRASwiIWLYElwoLASEgBISAEBACQkAICAEhIASEQIqAiGWKiPaFgBAQAkJACAgBISAEhIAQEAJCoCUERCxbgkuFhYAQEAJCQAgIASEgBISAEBACQiBFQMQyRUT7QkAICAEhIASEgBAQAkJACAgBIdASAiKWLcGlwkJACAgBISAEhIAQEAJCQAgIASGQIiBimSKifSEgBISAEBACQkAICAEhIASEgBBoCQERy5bgUmEhIASEgBAQAkJACAgBISAEhIAQSBEQsUwR0b4QEAJCQAgIASEgBISAEBACQkAItISAiGVLcKmwEBACQkAICAEhIASEgBAQAkJACKQIiFimiGhfCAgBISAEhIAQEAJCQAgIASEgBFpCQMSyJbhUWAgIASEgBISAEBACQkAICAEhIARSBEQsU0S0LwSEgBAQAkJACAgBISAEhIAQEAItISBi2RJcKiwEhIAQEAJCQAgIASEgBISAEBACKQIiliki2hcCQkAICAEhIASEgBAQAkJACAiBlhAQsWwJLhUWAkJACAgBISAEhIAQEAJCQAgIgRQBEcsUEe0LASEgBISAEBACQkAICAEhIASEQEsIiFi2BJcKCwEhIASEgBAQAkJACAgBISAEhECKgIhlioj2hYAQEAJCQAgIASEgBISAEBACQqAlBFohlvmEmj1s6UQqLASEgBAQAt2FwL333ptdcskl2V//+tc+F7bXXntll112Wfaf//ynT15/E/71r39l6667brb//vu3XMVHH32U3X///dk//vGP0mPff//97L777svefvvt0vyyROo6//zza64xz/PspZdeyj7++OOyQyrTXn/99WzfffetqauycIsZ7733XnbUUUf1ubZzzjknu+6661qsrXHxe+65JzvhhBMaFywp8eSTT2ZHHnlktvHGG2cffvhhSQklCQEhIASEwDAh4JzPw4annchKOLkk7htpnkfct0kmxAl9G0XcPqbPWCgRAkJACAiBCQhAVlZZZZUBd5CPOOKIbO211247XFdbbbXs9ttvDxvX6fKnP/0pm2+++cLub37zm2yFFVbwrAGF//73v7Npppkm++IXv5g9+OCDLdX13HPPZfPOO28222yzZa+88kqfY//yl79kn/3sZ7NPfvKTgXxOOeWUfcqkCaecckq23377ZdNPP332t7/9LRs1alT2zDPPZAsssEA2xRRTZOPGjQuHgMd///vfbOGFF06rKPYhzDfccEMgzd///vdDOgTt1ltvzT7xiU9kk0wySTbxxHyKq4V7ADapnHXWWdkee+yRzTDDDBk4gOHNN9+crbXWWtmkk06a/epXv8q4l83ILbfcEo495phjQrvSYyCxM888cyCxd9xxR7biiiumRWr2b7vttuyuu+7Knnjiiezhhx/OXnjhhSL/8MMPz77zne9kq6++esbAQD1hIOOb3/xmKNLt/7t6OChPCAgBIdAfBCaaaKL57ThetIzoEfrGKClxwniDbLJP6FsGKZQIASEgBITAECCA9uq3v/1tNtlkk2Vzzz13zRkgGhCRemTh73//e/bGG28E0lJzcD926JjT4YbwDJZ4XR56vZdffnmIrrrqqk2RSkjO2WefHYgKRMc+cNlMM82UnXzyydmGG26YQbDAig156KGHsrnmmivE/eemm24KhM73CV999dVAWsDfNZFzzDFHdsUVVwQsIHPUBSl89913w6EQzzvvvDODILGtscYa2Wc+85m42iJ+6aWXhjhlvG2f+tSnQhr3HoEAr7TSStnUU08diNOMM84Y0tOfY489NoO0nX766dm2226bfe5zn8tuvPHGjPRm5aSTTupDLN95551Ce3jooYcGUkl9a665ZrbPPvtkp556ajhHM8SSZ2jrrbfOXnvttez666/PxowZky2++OKBiEN+J5988kBUv/e972V77713ttNOOwV8wR88Pvjgg0CweeYht8jPfvaz7Mc//nGI+w/aSp4diDhay9/97nfhP+TYejlCrg+t+J///OciuZ3+d0WjFBECQkAI9AgCDIGyoYHkqz2pbZPb9gnb6IFMZRtfgGltm942vrAz2/ZZ2+awja/7vPYilwgBISAEhECEgHWKwyiekZkodXzUyENump3ctF598jzBOufheDM39aSWQzNTza2jnlvnPtQ155xz5qZla7mesgOo197/uZGnmuwll1wypBtRqkmv2vnJT36Sm6YwN/IVQur81re+FYrvueeeuZGM3DS2+frrrx/qNQ1huCbOb0QtpD3++ON9qj/33HNDHvWVbaYNzI1cluZ5eTP37VMvCaaFzI0Ah2PHjh1blDHyFNKMPIU001rmo0ePDmmmvcvNRLYom0a23377UG6jjTYKWWZSm9vARMDXNHq5mYmWbv6cmGYyrTLfYostQp1cjxHg3LSUxWaawJAHvp5uhDPgbVrm3LScfeozDWNuRDscxzO18847F/U7Zo1CI6NFvS+++GJuJtPhur773e+GuoxQF/lGGkPasssuW6TFEdNShvzTTjutSG6H/13RGEWEgBAQAh2AgL2357UNTge3g+PB9eB8cD84IFwQ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"
    }
   },
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 替代词集\n",
    "\n",
    "![image.png](attachment:image.png)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 训练中文维基Word2Vec模型\n",
    "!python word2vec_train.py -i corpus.zhwiki.segwithb.txt -m zhwiki.word2vec.model -v zhwiki.word2vec.vectors -s 400 -w 5 -n 5"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Word_F\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "和 各项 相似的词汇：\n",
      "- 各类\n",
      "- 多项\n",
      "- 这两项\n",
      "- 各种\n",
      "- 三项\n",
      "- 四项\n",
      "- 五项\n",
      "- 数项\n",
      "- 各级\n",
      "- 该项\n",
      "和 地点 相似的词汇：\n",
      "- 场地\n",
      "- 比赛场地\n",
      "- 场所\n",
      "- 场馆\n",
      "- 举办地\n",
      "- 地址\n",
      "- 日期\n",
      "- 位置\n",
      "- 赛项\n",
      "- 会场\n",
      "和 加大 相似的词汇：\n",
      "- 减小\n",
      "- 增大\n",
      "- 增加\n",
      "- 降低\n",
      "- 减少\n",
      "- 扩大\n",
      "- 缩小\n",
      "- 提高\n",
      "- 减低\n",
      "- 大大增加\n",
      "和 日常 相似的词汇：\n",
      "- 日常生活\n",
      "- 绝游\n",
      "- 平常\n",
      "- 作息\n",
      "- 起居\n",
      "- 平时\n",
      "- 生活用品\n",
      "- 杂务\n",
      "- 经常性\n",
      "- 絮谈\n",
      "和 严格 相似的词汇：\n",
      "- 严苛\n",
      "- 严谨\n",
      "- 严厉\n",
      "- 苛刻\n",
      "- 宽松\n",
      "- 严密\n",
      "- 宽泛\n",
      "- 繁琐\n",
      "- 规范\n",
      "- 恰当\n",
      "和 治污 相似的词汇：\n",
      "- 输变电\n",
      "- 引滦入津\n",
      "- 促淤\n",
      "- 整治\n",
      "- 水文地质\n",
      "- 综合治理\n",
      "- 南水北调\n",
      "- 越域\n",
      "- 鱼梯\n",
      "- 防汛\n",
      "和 监督 相似的词汇：\n",
      "- 监修\n",
      "- 段田凛\n",
      "- 脚本\n",
      "- 协力\n",
      "- 赏堤\n",
      "- 金田伊功\n",
      "- 原案\n",
      "- 幼青\n",
      "- 真咲南朋\n",
      "- 谷田部\n",
      "和 力度 相似的词汇：\n",
      "- 控制力\n",
      "- 幅度\n",
      "- 适度\n",
      "- 成效\n",
      "- 灵活性\n",
      "- 贫富差距\n",
      "- 步伐\n",
      "- 音量\n",
      "- 服务质量\n",
      "- 力道\n",
      "和 达标排放 相似的词汇：\n",
      "- 控制力\n",
      "- 幅度\n",
      "- 适度\n",
      "- 成效\n",
      "- 灵活性\n",
      "- 贫富差距\n",
      "- 步伐\n",
      "- 音量\n",
      "- 服务质量\n",
      "- 力道\n"
     ]
    }
   ],
   "source": [
    "from gensim.models import Word2Vec\n",
    "\n",
    "# 加载模型\n",
    "word2vec_model = Word2Vec.load('./Output/Models/zhwiki.word2vec.model')\n",
    "# 查找近义词\n",
    "seed_words = df_words_F['F-种子词'].to_list()\n",
    "similar_words = []\n",
    "for word in seed_words:\n",
    "    if word in word2vec_model.wv.vocab:\n",
    "        near_synonyms_words = word2vec_model.wv.most_similar(word, topn=10)\n",
    "    # 输出结果\n",
    "    print(f'和 {word} 相似的词汇：')\n",
    "    for similar_word, similarity in near_synonyms_words:\n",
    "        similar_words.append(similar_word)\n",
    "        print(f'- {similar_word}')\n",
    "\n",
    "# 将同类词集保存到文件中\n",
    "with open('./Output/Results/seed_synonym_words_F.txt', 'w', encoding='utf-8') as f:\n",
    "    f.write('\\n'.join(similar_words))"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Word_T\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "和 拆除 相似的词汇：\n",
      "- 拆毁\n",
      "- 拆掉\n",
      "- 拆卸\n",
      "- 改建\n",
      "- 填平\n",
      "- 撤除\n",
      "- 废弃\n",
      "- 拆迁\n",
      "- 关闭\n",
      "- 复建\n",
      "和 取缔 相似的词汇：\n",
      "- 查禁\n",
      "- 查封\n",
      "- 严惩\n",
      "- 充公\n",
      "- 革除\n",
      "- 明令禁止\n",
      "- 禁绝\n",
      "- 征用\n",
      "- 查处\n",
      "- 全面禁止\n",
      "和 手续 相似的词汇：\n",
      "- 申请书\n",
      "- 入境手续\n",
      "- 登记手续\n",
      "- 回乡证\n",
      "- 证件\n",
      "- 事宜\n",
      "- 结婚登记\n",
      "- 准予\n",
      "- 单据\n",
      "- 逾期\n",
      "和 中 相似的词汇：\n",
      "- 之中\n",
      "- 中是\n",
      "- 当中\n",
      "- 中有\n",
      "- 中其\n",
      "- 中则\n",
      "- 里面\n",
      "- 中为\n",
      "- 中该\n",
      "- 中以\n",
      "和 房 相似的词汇：\n",
      "- 房为\n",
      "- 房及\n",
      "- 客厅\n",
      "- 洗衣房\n",
      "- 居室\n",
      "- 饭厅\n",
      "- 房是\n",
      "- 寝室\n",
      "- 卧室\n",
      "- 㓥\n",
      "和 投诉 相似的词汇：\n",
      "- 举报\n",
      "- 申诉\n",
      "- 检控\n",
      "- 报案\n",
      "- 食环署\n",
      "- 滋扰\n",
      "- 检举\n",
      "- 查问\n",
      "- 致歉\n",
      "- 广管局\n",
      "和 提供 相似的词汇：\n",
      "- 提供支援\n",
      "- 供应\n",
      "- 发放\n",
      "- 提供者\n",
      "- 增值\n",
      "- 购买\n",
      "- 包含\n",
      "- 配备\n",
      "- 获取\n",
      "- 备有\n",
      "和 认为 相似的词汇：\n",
      "- 指出\n",
      "- 普遍认为\n",
      "- 相信\n",
      "- 声称\n",
      "- 断言\n",
      "- 看来\n",
      "- 觉得\n",
      "- 断定\n",
      "- 批评\n",
      "- 确信\n",
      "和 扰民 相似的词汇：\n",
      "- 徇私\n",
      "- 怠慢\n",
      "- 无度\n",
      "- 滥\n",
      "- 纵容\n",
      "- 民不聊生\n",
      "- 懈怠\n",
      "- 体恤\n",
      "- 吏民\n",
      "- 纳贿\n",
      "和 养殖 相似的词汇：\n",
      "- 养殖业\n",
      "- 捕捞\n",
      "- 养殖场\n",
      "- 养鱼\n",
      "- 畜牧业\n",
      "- 水产品\n",
      "- 种植业\n",
      "- 海产品\n",
      "- 家禽\n",
      "- 养猪\n",
      "和 部门 相似的词汇：\n",
      "- 业务部门\n",
      "- 行政部门\n",
      "- 政府部门\n",
      "- 机构\n",
      "- 行业\n",
      "- 工作部门\n",
      "- 部委\n",
      "- 职能部门\n",
      "- 公共部门\n",
      "- 管理机构\n",
      "和 污染环境 相似的词汇：\n",
      "- 可燃\n",
      "- 腐坏\n",
      "- 污染空气\n",
      "- 挥发\n",
      "- 环境污染\n",
      "- 污染\n",
      "- 腐蚀\n",
      "- 含铅\n",
      "- 废气\n",
      "- 过热\n",
      "和 尽快 相似的词汇：\n",
      "- 尽早\n",
      "- 早日\n",
      "- 尽速\n",
      "- 立即\n",
      "- 切实\n",
      "- 采取措施\n",
      "- 从速\n",
      "- 务必\n",
      "- 设法\n",
      "- 暂缓\n",
      "和 陡沟 相似的词汇：\n",
      "- 洪范池\n",
      "- 马跑泉\n",
      "- 马庙\n",
      "- 偕乐桥\n",
      "- 戴坊\n",
      "- 章庄\n",
      "- 高塍\n",
      "- 崖门镇\n",
      "- 东凤镇\n",
      "- 胡庄村\n",
      "和 要求 相似的词汇：\n",
      "- 敦促\n",
      "- 请求\n",
      "- 建议\n",
      "- 呼吁\n",
      "- 促请\n",
      "- 承诺\n",
      "- 必须\n",
      "- 采取措施\n",
      "- 劝告\n",
      "- 应立即\n",
      "和 刁镇 相似的词汇：\n",
      "- 枫溪\n",
      "- 锡降\n",
      "- 淤头\n",
      "- 禹王台\n",
      "- 如泰号\n",
      "- 镇古县\n",
      "- 锦城镇\n",
      "- 罗圈\n",
      "- 顺河\n",
      "- 郑麻车\n",
      "和 拒绝 相似的词汇：\n",
      "- 回绝\n",
      "- 婉拒\n",
      "- 断然拒绝\n",
      "- 拒绝接受\n",
      "- 谢绝\n",
      "- 不愿\n",
      "- 不肯\n",
      "- 答应\n",
      "- 拒\n",
      "- 否决\n",
      "和 章丘 相似的词汇：\n",
      "- 垦利\n",
      "- 即墨\n",
      "- 济宁市\n",
      "- 菏泽市\n",
      "- 高密市\n",
      "- 日照市\n",
      "- 枣庄市\n",
      "- 莒县\n",
      "- 莱芜\n",
      "- 邹平\n",
      "和 土地 相似的词汇：\n",
      "- 农地\n",
      "- 国有土地\n",
      "- 田地\n",
      "- 耕地\n",
      "- 地权\n",
      "- 农田\n",
      "- 私有土地\n",
      "- 用地\n",
      "- 产权\n",
      "- 农业用地\n",
      "和 还 相似的词汇：\n",
      "- 也\n",
      "- 还有\n",
      "- 还会\n",
      "- 并\n",
      "- 还是\n",
      "- 还要\n",
      "- 并且\n",
      "- 亦\n",
      "- 仍然\n",
      "- 就\n",
      "和 不合理 相似的词汇：\n",
      "- 合理\n",
      "- 不公\n",
      "- 不负责任\n",
      "- 苛刻\n",
      "- 不切实际\n",
      "- 不当\n",
      "- 草率\n",
      "- 不必要\n",
      "- 荒谬\n",
      "- 严苛\n",
      "和 求助 相似的词汇：\n",
      "- 求救\n",
      "- 查问\n",
      "- 通风报信\n",
      "- 报警\n",
      "- 报案\n",
      "- 呼救\n",
      "- 求援\n",
      "- 提供援助\n",
      "- 报平安\n",
      "- 索取\n",
      "和 环保部门 相似的词汇：\n",
      "- 监测数据\n",
      "- 环保局\n",
      "- 发改委\n",
      "- 工商总局\n",
      "- 抽查\n",
      "- 排查\n",
      "- 工商局\n",
      "- 专家组\n",
      "- 开罚\n",
      "- 公安机关\n",
      "和 石灰窑 相似的词汇：\n",
      "- 金弄\n",
      "- 村青\n",
      "- 镇石\n",
      "- 陈庄村\n",
      "- 垭\n",
      "- 坪上\n",
      "- 油榨\n",
      "- 镇沙\n",
      "- 乡马\n",
      "- 兴隆村\n",
      "和 属于 相似的词汇：\n",
      "- 归属于\n",
      "- 属\n",
      "- 不属\n",
      "- 归入\n",
      "- 是\n",
      "- 局限于\n",
      "- 等同于\n",
      "- 隶属\n",
      "- 仅限于\n",
      "- 严格来说\n",
      "和 环境污染 相似的词汇：\n",
      "- 水污染\n",
      "- 空气污染\n",
      "- 水土流失\n",
      "- 污染\n",
      "- 土壤侵蚀\n",
      "- 荒漠化\n",
      "- 沙漠化\n",
      "- 工业污染\n",
      "- 二手烟\n",
      "- 酸雨\n",
      "和 查处 相似的词汇：\n",
      "- 公安机关\n",
      "- 违法犯罪\n",
      "- 清查\n",
      "- 经济犯罪\n",
      "- 滥用职权\n",
      "- 立案查处\n",
      "- 立案侦查\n",
      "- 公安部门\n",
      "- 追责\n",
      "- 举报\n",
      "和 来电 相似的词汇：\n",
      "- 接听\n",
      "- 未接\n",
      "- 短讯\n",
      "- 短信\n",
      "- 答铃\n",
      "- 拨打\n",
      "- 简讯\n",
      "- 打电话\n",
      "- 致电\n",
      "- 铃声\n",
      "和 四 相似的词汇：\n",
      "- 三\n",
      "- 五\n",
      "- 六\n",
      "- 二\n",
      "- 七\n",
      "- 八\n",
      "- 十\n",
      "- 四在\n",
      "- 九\n",
      "- 四大\n"
     ]
    }
   ],
   "source": [
    "from gensim.models import Word2Vec\n",
    "\n",
    "# 加载模型\n",
    "word2vec_model = Word2Vec.load('./Output/Models/zhwiki.word2vec.model')\n",
    "# 查找近义词\n",
    "seed_words = df_words_T['T-种子词'].to_list()\n",
    "similar_words = []\n",
    "for word in seed_words:\n",
    "    if word in word2vec_model.wv.vocab:\n",
    "        near_synonyms_words = word2vec_model.wv.most_similar(word, topn=10)\n",
    "    # 输出结果\n",
    "    print(f'和 {word} 相似的词汇：')\n",
    "    for similar_word, similarity in near_synonyms_words:\n",
    "        similar_words.append(similar_word)\n",
    "        print(f'- {similar_word}')\n",
    "\n",
    "# 将同类词集保存到文件中\n",
    "with open('./Output/Results/seed_synonym_words_T.txt', 'w', encoding='utf-8') as f:\n",
    "    f.write('\\n'.join(similar_words))"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第三步：犯罪线索筛查模型\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['各项', '地点', '加大', '日常', '严格', '治污', '监督', '力度', '达标排放', '服务项目', '巡查', '监察', '应付', '随机', '卷材', '生产线', '密闭', '环境监测', '严厉查处', '偷排', '偷放', '责成', '密切', '严厉打击', '确保', '牵走', '分户式', '入围', '属地', '污', '暂扣', '人居', '除臭剂', '有机肥', '动态', '沙坑', '散乱', '实时', '夜查', '石油化工', '减压', '催化裂化', '加氢', '挥发性', '密封', '有机物', '厂界', '甲烷', '总烃', '二甲苯', '监测数据', '催化重整', '二氧化硫', '氮氧化物', '排及', '沉淀池', '入驻', '泵', '亦', '局对', '减排', '出焦', '内个', '活性炭', '不外', '逐一', '群众反映', '强化', '跟进', '优化', '记载', '名录', '办好', '我区', '起爆', '祭扫', '并处', '收益', '行政许可', '产品检验', '太低', '疫病', '第五十七条', '十分重视', '第十一条', '派发', '企业名单', '其到', '一经', '法定程序', '新形势下', '各类', '多项', '这两项', '各种', '三项', '四项', '五项', '数项', '各级', '该项', '场地', '比赛场地', '场所', '场馆', '举办地', '地址', '日期', '位置', '赛项', '会场', '减小', '增大', '增加', '降低', '减少', '扩大', '缩小', '提高', '减低', '大大增加', '日常生活', '绝游', '平常', '作息', '起居', '平时', '生活用品', '杂务', '经常性', '絮谈', '严苛', '严谨', '严厉', '苛刻', '宽松', '严密', '宽泛', '繁琐', '规范', '恰当', '输变电', '引滦入津', '促淤', '整治', '水文地质', '综合治理', '南水北调', '越域', '鱼梯', '防汛', '监修', '段田凛', '脚本', '协力', '赏堤', '金田伊功', '原案', '幼青', '真咲南朋', '谷田部', '控制力', '幅度', '适度', '成效', '灵活性', '贫富差距', '步伐', '音量', '服务质量', '力道', '控制力', '幅度', '适度', '成效', '灵活性', '贫富差距', '步伐', '音量', '服务质量', '力道']\n"
     ]
    }
   ],
   "source": [
    "all_seed_words_F = []\n",
    "with open('./Output/Results/seed_words_F.txt', 'r') as f:\n",
    "    lines = f.readlines()\n",
    "    all_seed_words_F.extend(line.replace('\\n', '') for line in lines)\n",
    "with open('./Output/Results/seed_similar_words_F.txt', 'r') as f:\n",
    "    lines = f.readlines()\n",
    "    all_seed_words_F.extend(line.replace('\\n', '') for line in lines)\n",
    "with open('./Output/Results/seed_synonym_words_F.txt', 'r') as f:\n",
    "    lines = f.readlines()\n",
    "    all_seed_words_F.extend(line.replace('\\n', '') for line in lines)\n",
    "print(all_seed_words_F)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['拆除', '取缔', '手续', '中', '房', '投诉', '提供', '认为', '扰民', '养殖', '部门', '污染环境', '尽快', '陡沟', '要求', '刁镇', '拒绝', '章丘', '土地', '还', '不合理', '求助', '环保部门', '石灰窑', '属于', '环境污染', '查处', '来电', '四', '希望', '相关', '单位', '落实', '处理', '整顿', '鸭棚', '制止', '塑料颗粒', '气割', '养殖厂', '农家乐', '复合板', '大理石', '加工过程', '烟气', '收购站', '解决不了', '断断续续', '渗漏', '搅拌', '残渣', '倾倒垃圾', '橡胶', '有亩', '灭火', '时扬尘', '烟味', '卷材', '捞鱼', '偷放', '沥青厂', '田福村', '盗用', '浓重', '塑机', '厂名', '移走', '隔音', '回应', '佛寺', '信鸽', '铝合金', '塑料厂', '断电', '水泥制品', '停业整顿', '配件厂', '黑村', '煤烟', '锁', '洗煤厂', '鲶鱼', '遗落', '电钻', '尘土飞扬', '周围环境', '马庄村', '煤厂', '煤灰', '飞扬', '原状', '木柴', '机厂', '四家', '市貌', '日常生活', '人员伤亡', '焦集村', '油污', '啃食', '麦苗', '蒸发', '结晶', '内乱', '电气焊', '实地考察', '牵走', '柴火', '水资源', '入围', '采取相应', '约亩', '偷着', '飞', '玻璃纤维', '性气体', '大院里', '丢弃', '蚊虫', '乱飞', '叫声', '砖块', '养猪厂', '鸡毛', '打鱼', '鱼类', '降尘', '死鸡', '刻', '镇鹿', '毛埠村', '洒水', '乱排', '切割机', '污染空气', '黄土', '选矿厂', '绿网', '暂扣', '石材', '人居', '高炉', '有毒气体', '排至', '警灯', '易燃易爆', '石屋', '曹范村', '强烈不满', '甲醛', '洒落', '减产', '塑料板', '依法查处', '井水', '粉煤灰', '蓄水池', '保护区', '音量', '物料', '有机肥', '发动机', '沙坑', '叉车', '火纸', '吸尘', '崖', '批文', '谷堆', '近十年', '污物', '粪池', '水有', '大且', '党政办', '通话记录', '来源不明', '开垦', '洗沙点', '刻沙', '铲除', '白塔村', '杂草', '卫生标准', '散乱', '山沟', '塌', '炊具', '南宫', '石机', '暂停营业', '大冶', '喷塑', '鸡鸭', '渎职', '保护地', '拉运', '白烟', '责任人', '追责', '火光', '董汉营', '问责', '伴随', '有权', '绿植', '发电站', '猪场', '退养', '木炭', '排及', '从严', '摊', '入驻', '泥沙', '点到点', '唯独', '车辆通行', '往村', '批评', '机油', '杜张', '村落', '严加', '撤掉', '地下管道', '办用', '掩埋', '主机', '恢复原状', '水坝', '水泵房', '屡禁不止', '局对', '出焦', '内个', '风压', '赵相波', '豆腐坊', '加以', '耿公清', '龙子', '生火', '内建盖', '风车', '雅思', '撤离', '沙厂', '合法经营', '形势严峻', '但村', '捡拾', '迁入', '鸡舍', '兔子', '名山', '村名', '换货', '自燃', '电压', '出人命', '全天候', '求', '东夏村', '预警', '干桥', '黏土', '潘立荣', '胶', '年村', '筛沙', '四点', '徇私舞弊', '很难', '掺杂', '鹁鸽', '获利', '偷运', '桂平', '天井', '落石', '庄镇山', '圣圈', '闫振福', '毁林', '运', '偷卖', '山沙', '吴小庄村', '吴丙义', '懒政', '挖断', '大有', '用土', '赵洪玉', '闫满村', '闫家峪村', '私挖', '水峪村', '偷取', '废除', '运出', '东沈', '销赃', '督办', '中义', '追究责任', '不像', '弓角湾村', '沙卖沙', '惩罚', '补偿金', '孙王', '铺垫', '湿滑', '收成', '卖土', '车脚', '全部排', '采光', '工程队', '整地', '一宅', '砸坏', '李旭胜', '农地', '动工', '归还给', '耕', '退林', '并处', '建窑', '建坟', '执法权', '强占', '白杨树', '踩踏', '还原', '李条', '撤职', '挖除', '高杆', '假酒', '棉花', '假冒', '端正', '下体', '担负', '产品检验', '正当理由', '送水', '腥味', '葱丝', '未经检验', '第五十七条', '九十日', '已下', '十分重视', '保养', '物种', '下以', '调货', '餐盒', '不予承认', '夹子', '故该', '童鞋', '较贵', '其到', '常备', '现不', '囤货', '售罄', '必带', '备货', '鳄鱼', '区食', '元军', '王华忠', '第十四条', '行洪', '四乱', '简化', '古宅', '于立斌', '立斌', '牟利', '营', '拉起', '当响', '怨声载道', '暂且不说', '换来', '一经', '徐西', '武以', '暗地里', '挖石', '尘土飞杨', '自然环境', '对麗园', '城市污染', '占地费', '谭家', '盗卖', '大侯', '盖房子', '这笔', '黄庆武', '渔网', '野兔', '付清', '新形势下', '依赖', '受术者', '第三十五条', '精神损失', '争执', '元及', '最高人民法院', '输氧', '满员', '第六十四', '一上午', '形式主义', '熟练', '改善服务', '遗传病', '打印发票', '如期', '上呼吸道', '刁难', '落实政策', '子有', '对外开放', '违约金', '增派', '早退', '参加考试', '公积金', '认知', '四联', '飞往', '拆毁', '拆掉', '拆卸', '改建', '填平', '撤除', '废弃', '拆迁', '关闭', '复建', '查禁', '查封', '严惩', '充公', '革除', '明令禁止', '禁绝', '征用', '查处', '全面禁止', '申请书', '入境手续', '登记手续', '回乡证', '证件', '事宜', '结婚登记', '准予', '单据', '逾期', '之中', '中是', '当中', '中有', '中其', '中则', '里面', '中为', '中该', '中以', '房为', '房及', '客厅', '洗衣房', '居室', '饭厅', '房是', '寝室', '卧室', '㓥', '举报', '申诉', '检控', '报案', '食环署', '滋扰', '检举', '查问', '致歉', '广管局', '提供支援', '供应', '发放', '提供者', '增值', '购买', '包含', '配备', '获取', '备有', '指出', '普遍认为', '相信', '声称', '断言', '看来', '觉得', '断定', '批评', '确信', '徇私', '怠慢', '无度', '滥', '纵容', '民不聊生', '懈怠', '体恤', '吏民', '纳贿', '养殖业', '捕捞', '养殖场', '养鱼', '畜牧业', '水产品', '种植业', '海产品', '家禽', '养猪', '业务部门', '行政部门', '政府部门', '机构', '行业', '工作部门', '部委', '职能部门', '公共部门', '管理机构', '可燃', '腐坏', '污染空气', '挥发', '环境污染', '污染', '腐蚀', '含铅', '废气', '过热', '尽早', '早日', '尽速', '立即', '切实', '采取措施', '从速', '务必', '设法', '暂缓', '洪范池', '马跑泉', '马庙', '偕乐桥', '戴坊', '章庄', '高塍', '崖门镇', '东凤镇', '胡庄村', '敦促', '请求', '建议', '呼吁', '促请', '承诺', '必须', '采取措施', '劝告', '应立即', '枫溪', '锡降', '淤头', '禹王台', '如泰号', '镇古县', '锦城镇', '罗圈', '顺河', '郑麻车', '回绝', '婉拒', '断然拒绝', '拒绝接受', '谢绝', '不愿', '不肯', '答应', '拒', '否决', '垦利', '即墨', '济宁市', '菏泽市', '高密市', '日照市', '枣庄市', '莒县', '莱芜', '邹平', '农地', '国有土地', '田地', '耕地', '地权', '农田', '私有土地', '用地', '产权', '农业用地', '也', '还有', '还会', '并', '还是', '还要', '并且', '亦', '仍然', '就', '合理', '不公', '不负责任', '苛刻', '不切实际', '不当', '草率', '不必要', '荒谬', '严苛', '求救', '查问', '通风报信', '报警', '报案', '呼救', '求援', '提供援助', '报平安', '索取', '监测数据', '环保局', '发改委', '工商总局', '抽查', '排查', '工商局', '专家组', '开罚', '公安机关', '金弄', '村青', '镇石', '陈庄村', '垭', '坪上', '油榨', '镇沙', '乡马', '兴隆村', '归属于', '属', '不属', '归入', '是', '局限于', '等同于', '隶属', '仅限于', '严格来说', '水污染', '空气污染', '水土流失', '污染', '土壤侵蚀', '荒漠化', '沙漠化', '工业污染', '二手烟', '酸雨', '公安机关', '违法犯罪', '清查', '经济犯罪', '滥用职权', '立案查处', '立案侦查', '公安部门', '追责', '举报', '接听', '未接', '短讯', '短信', '答铃', '拨打', '简讯', '打电话', '致电', '铃声', '三', '五', '六', '二', '七', '八', '十', '四在', '九', '四大']\n"
     ]
    }
   ],
   "source": [
    "all_seed_words_T = []\n",
    "with open('./Output/Results/seed_words_T.txt', 'r') as f:\n",
    "    lines = f.readlines()\n",
    "    all_seed_words_T.extend(line.replace('\\n', '') for line in lines)\n",
    "with open('./Output/Results/seed_similar_words_T.txt', 'r') as f:\n",
    "    lines = f.readlines()\n",
    "    all_seed_words_T.extend(line.replace('\\n', '') for line in lines)\n",
    "with open('./Output/Results/seed_synonym_words_T.txt', 'r') as f:\n",
    "    lines = f.readlines()\n",
    "    all_seed_words_T.extend(line.replace('\\n', '') for line in lines)\n",
    "print(all_seed_words_T)\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 犯罪线索筛查算法\n",
    "\n",
    "#### 待筛查数据词汇与某词集词汇匹配相似值计算\n",
    "\n",
    "对于待筛查数据词汇与某词集词汇匹配相似值计算(match(seg,word))，即单条待筛查数据中某词汇(seg)与专业词库中某词集中某词汇(word)的相似值计算，具体步骤如下:\n",
    "\n",
    "1. 判断输入的两词汇是否相同，若相同则相似值记为 1，否则进行 2。\n",
    "2. 判断两词汇是否同时存在于已训练好的 Word2Vec 词向量模型中，若存在则计算两词汇文本相似度后进行 4，否则进行 3。\n",
    "3. 在基于维基百科语料的词向量模型中得到 seg 的词向量，进而计算两词汇文本相似度后进行 4。\n",
    "4. 判断相似度是否大于或等于设定阈值，若满足则记录该相似度，否则结束本次相似值计算。\n",
    "5. 将记录的二者文本相似度与本次匹配的 word 对应权重值 p 作乘积运算，结果作为两词汇的相似值。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "import gensim\n",
    "import numpy as np\n",
    "from gensim import models\n",
    "\n",
    "# 加载已训练好的Word2Vec词向量模型\n",
    "word_model = models.Word2Vec.load('./Output/Models/full_word2vec.model')\n",
    "wiki_cn_model = models.Word2Vec.load('./Output/Models/zhwiki.word2vec.model')\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 210,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>种子词</th>\n",
       "      <th>回溯值</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>不合理</td>\n",
       "      <td>0.005241</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>严格</td>\n",
       "      <td>0.013889</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>中</td>\n",
       "      <td>0.015753</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>力度</td>\n",
       "      <td>0.042857</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>加大</td>\n",
       "      <td>0.025000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   种子词       回溯值\n",
       "0  不合理  0.005241\n",
       "1   严格  0.013889\n",
       "2    中  0.015753\n",
       "3   力度  0.042857\n",
       "4   加大  0.025000"
      ]
     },
     "execution_count": 210,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 合并两个DataFrame，并按 'T-种子词' 和 'F-种子词' 列排列\n",
    "TF_words = pd.concat([df_words_T[['T-种子词', '回溯值']].rename(columns={'T-种子词': '种子词'}),\n",
    "                     df_words_F[['F-种子词', '回溯值']].rename(columns={'F-种子词': '种子词'})]).sort_values('种子词')\n",
    "# 重置索引\n",
    "TF_words = TF_words.reset_index(drop=True)\n",
    "TF_words.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 137,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "相似度：0.00\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "# 设定匹配阈值\n",
    "threshold = 0.8\n",
    "# 定义相似度计算函数\n",
    "def get_sim(word_vec, seg_vec, weight):\n",
    "    # 计算文本相似度\n",
    "    sim = np.dot(seg_vec, word_vec) / (np.linalg.norm(seg_vec) * np.linalg.norm(word_vec))\n",
    "    # 判断相似度是否大于等于阈值，如果满足则返回相似度和权重的乘积\n",
    "    # print(sim)\n",
    "    return sim * weight if sim >= threshold else 0.0\n",
    "\n",
    "def match(seg, word):\n",
    "    if word in TF_words['种子词'].values:\n",
    "        weight = TF_words.loc[TF_words['种子词']==word]['回溯值'].values[0]\n",
    "    else:\n",
    "        weight = 0.0\n",
    "    # print(f\"Seg: {seg}\\tWord: {word}\\tWeight: {weight}\")\n",
    "    # 两词汇相同\n",
    "    if seg == word:\n",
    "        return 1.0 * weight\n",
    "    # 获取待筛查数据词汇和目标词汇的词向量\n",
    "    try:\n",
    "        word_vec = word_model.wv.get_vector(word)\n",
    "    except KeyError:\n",
    "        try:\n",
    "            word_vec = wiki_cn_model.wv.get_vector(word)\n",
    "        except KeyError:\n",
    "            word_vec = np.random.uniform(-0.25, 0.25, 400)\n",
    "\n",
    "    try:\n",
    "        seg_vec = wiki_cn_model.wv.get_vector(seg)\n",
    "    except KeyError:\n",
    "        seg_vec = np.random.uniform(-0.25, 0.25, 400)\n",
    "    # 计算两词汇相似值\n",
    "    return get_sim(word_vec, seg_vec, weight)\n",
    "\n",
    "# 示例用法\n",
    "seg = '监督'\n",
    "word = '拒绝'\n",
    "weight = 1.0\n",
    "similarity = match(seg, word)\n",
    "print(f\"相似度：{similarity:.2f}\")\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 单条待筛查数据与某词集的相似值运算\n",
    "\n",
    "- 以分词后的待筛查数据、专业词库中某词集作为输入项目。\n",
    "- 遍历输入数据集合中元素并做碰撞匹配，结合 match(seg,word)模块，对每次遍历产生相似值作求和运算。\n",
    "- 与此同时，计算某词集中词汇在待筛查数据中相同个数，再将求和运算结果与词汇相同个数求和得到该待筛查数据与某词集的相似值。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 138,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 定义待筛查数据与某词集的相似值计算函数\n",
    "def sim(data, dic):\n",
    "    # 对某词集中的每个词汇进行匹配，并将相似度累加到sum_similarity中\n",
    "    sum_similarity = 0\n",
    "    for word in dic:\n",
    "        word_similarity = 0\n",
    "        for seg in data:\n",
    "            # 对分词后的待筛查数据中的每个词汇进行匹配\n",
    "            similarity = match(seg, word)\n",
    "            word_similarity += similarity\n",
    "        # 计算某词集中词汇在待筛查数据中相同个数\n",
    "        count = data.count(word)\n",
    "        # 将每个词汇的相似值乘以相同个数，然后将结果累加到sum_similarity中\n",
    "        sum_similarity += (count+word_similarity)\n",
    "\n",
    "    return sum_similarity"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 178,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 需要注意的是，在调用classifier()函数之前，需要提前定义一些变量，例如seed_words_T和seed_words_F，以及clean_and_seg()和sim()函数。这些变量和函数的定义可以在代码的其他位置完成。\n",
    "\n",
    "def classifier(raw_text, verbose=True):\n",
    "    data = clean_and_seg(raw_text).split(' ')\n",
    "    T_sim = sim(data, list(seed_words_T))\n",
    "    F_sim = sim(data, list(seed_words_F))\n",
    "    pred = 0 if F_sim > T_sim else 1\n",
    "    if verbose:\n",
    "        print(f\"预处理结果：{data}\")\n",
    "        print(f\"事件：{raw_text}\\n与F集相似值：{F_sim}\\n与T集相似值：{T_sim}\")\n",
    "        print(\"该事件分类为：普通事件\" if pred == 0 else \"该事件分类为：疑似犯罪线索事件\")\n",
    "    return pred\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 第四步：案例分析"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 疑似犯罪线索事件"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 179,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "预处理结果：['有人', '社区', '东北角', '私自', '两口', '机井', '村民', '反映', '村', '书记', '徐与', '别人', '合伙', '打算', '地区', '运输', '有喜', '气体', '投放', '谋取', '利益', '来电', '投诉', '要求', '追究', '贵任', '']\n",
      "事件：有人在**社区东北角私自打了两口机井，据有村民反映村书记徐**与别人合伙，打算从其他地区运输有喜气体投放谋取利益。来电投诉，要求追究贵任。\n",
      "与F集相似值：0.0\n",
      "与T集相似值：2.0132629256079957\n",
      "该事件分类为：疑似犯罪线索事件\n"
     ]
    }
   ],
   "source": [
    "# 示例用法\n",
    "raw_text = \"有人在**社区东北角私自打了两口机井，据有村民反映村书记徐**与别人合伙，打算从其他地区运输有喜气体投放谋取利益。来电投诉，要求追究贵任。\"\n",
    "pred = classifier(raw_text)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 180,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "预处理结果：['针对', '网传', '济南', '整形', '机构', '女老板', '焦某', '殴打', '顾客', '视频', '一事', '济南市', '公安局', '高新', '分局', '立案', '货查', '犯罪', '嫌疑人', '徐', '某明', '涉嫌', '非法拘禁', '罪', '依法', '刑事拘留', '嫌疑人', '焦某', '徐某', '涉嫌', '非法拘禁', '罪', '依法', '取保候审', '案件', '正在', '进一步', '办理', '中', '调查', '处理', '情况', '及时', '社会', '公布', '']\n",
      "事件：针对“网传济南某整形机构女老板焦某殴打顾客的视频”一事，经济南市公安局高新分局立案货查，犯罪嫌疑人徐某明涉嫌非法拘禁罪，被依法刑事拘留：嫌疑人焦某、徐某涉嫌非法拘禁罪，被依法取保候审。案件正在进一步办理中，调查处理情况将及时向社会公布。\n",
      "与F集相似值：0.0\n",
      "与T集相似值：1.0157534246575342\n",
      "该事件分类为：疑似犯罪线索事件\n"
     ]
    }
   ],
   "source": [
    "# 示例用法\n",
    "raw_text = \"针对“网传济南某整形机构女老板焦某殴打顾客的视频”一事，经济南市公安局高新分局立案货查，犯罪嫌疑人徐某明涉嫌非法拘禁罪，被依法刑事拘留：嫌疑人焦某、徐某涉嫌非法拘禁罪，被依法取保候审。案件正在进一步办理中，调查处理情况将及时向社会公布。\"\n",
    "pred = classifier(raw_text)\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 普通事件"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 181,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "预处理结果：['市', '生态', '环境保护', '综合', '行政', '执法', '支队', '执法人员', '举报人', '反映', '问题', '对林', '公司', '莱芜', '分公司', '进行', '现场', '核查', '具体', '核查', '情况', '现场', '验查', '林', '公司', '单位', '正常', '生产', '污染', '防治', '设施', '均', '正常', '运行', '未', '发现', '在线', '数据', '超标', '现象', '执法人员', '现场', '要求', '料', '公司', '单位', '严格', '生产', '管理', '确保', '各项', '污染物', '达标排放', '要求', '加强', '对区', '企业', '监管', '力度', '林厂', '污染', '投诉', '问题', '局己', '信访', '程序', '办理', '建议', '热线', '不', '列入', '年终', '满意率', '考核', '谢谢', '']\n",
      "事件：市生态环境保护综合行政执法支队执法人员就举报人反映的问题对林公司莱芜分公司进行了现场核查，具体核查情况是⋯⋯。现场验查，林公司各单位 正常生产，污染防治设施均正常运行，未发现有在线数据超标的现象。执法人员现场要求料公司各单位严格生产管理，确保各项污染物达标排放，同时要求加强对区管企业的监管力度。关于林厂污染的投诉问题，我局己按照信访程序办理。建议12345热线不列入年终满意率考核，谢谢！\n",
      "与F集相似值：4.119246031746032\n",
      "与T集相似值：1.0043368268883266\n",
      "该事件分类为：普通事件\n"
     ]
    }
   ],
   "source": [
    "raw_text = \"市生态环境保护综合行政执法支队执法人员就举报人反映的问题对林公司莱芜分公司进行了现场核查，具体核查情况是⋯⋯。现场验查，林公司各单位 正常生产，污染防治设施均正常运行，未发现有在线数据超标的现象。执法人员现场要求料公司各单位严格生产管理，确保各项污染物达标排放，同时要求加强对区管企业的监管力度。关于林厂污染的投诉问题，我局己按照信访程序办理。建议12345热线不列入年终满意率考核，谢谢！\"\n",
    "pred = classifier(raw_text)\n"
   ]
  },
  {
   "attachments": {},
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 错误案例"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 182,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "预处理结果：['收到', '焦先生', '诉求', '后', '派出所', '领导', '高度重视', '原局', '督办', '件', '中', '了解', '举报', '厂', '排放', '重金属', '此项', '超出', '派出所', '管辖', '范園系', '环保部门', '管辖', '厂', '经理', '徐', '逃避', '故意', '杀人', '投毒', '非法经营', '污染环境', '问题', '调阅', '档案', '未', '查询', '案件', '电话', '联系', '焦先生', '焦先生', '强烈要求', '检察院', '处理', '不', '要求', '公安机关', '处理', '申请', '不', '计入', '考核', '']\n",
      "事件：收到焦先生诉求后，派出所所领导高度重视，原*局的督办件中了解到，举报**厂排放重金属，此项超出派出所管辖范園，系环保部门管辖，关于**厂经理徐**逃避故意杀人、投毒、非法经营，污染环境问题，经过调阅档案，未查询到此案件，电话联系焦先生，焦先生强烈要求检察院处理，不要求公安机关处理，申请不计入考核。\n",
      "与F集相似值：0.0\n",
      "与T集相似值：2.096213194772477\n",
      "该事件分类为：疑似犯罪线索事件\n"
     ]
    }
   ],
   "source": [
    "raw_text = \"收到焦先生诉求后，派出所所领导高度重视，原*局的督办件中了解到，举报**厂排放重金属，此项超出派出所管辖范園，系环保部门管辖，关于**厂经理徐**逃避故意杀人、投毒、非法经营，污染环境问题，经过调阅档案，未查询到此案件，电话联系焦先生，焦先生强烈要求检察院处理，不要求公安机关处理，申请不计入考核。\"\n",
    "pred = classifier(raw_text) # 这是一个分类错误的案例\n"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "hw",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.13"
  },
  "orig_nbformat": 4,
  "vscode": {
   "interpreter": {
    "hash": "747b0286689d47d2437887b3fa14bd59117dc06b2f96aae2ee6b23ff3c51c6b1"
   }
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
